MVC介绍
MVC模式是
![](/icons/86184yi.gif)
种非常理想化
![](/icons/86184de.gif)
设计模式
![](/icons/86184dou.gif)
应用MVC模式完成两个以上项目
![](/icons/86184de.gif)
人都有同样
![](/icons/86184de.gif)
体会
![](/icons/86184dou.gif)
他们已经对以前
![](/icons/86184de.gif)
工作思路方法进行了彻底
![](/icons/86184de.gif)
改造
![](/icons/86184dou2.gif)
工作模式
![](/icons/86184de.gif)
改变要付出痛苦
![](/icons/86184de.gif)
代价
![](/icons/86184dou.gif)
但现在你有现成
![](/icons/86184de.gif)
技术架构可以采用
![](/icons/86184dou.gif)
避免在项目中自己开发、摸索
![](/icons/86184dou2.gif)
它就是开源Apache Struts framework
![](/icons/86184dou.gif)
它提供了实现MVC设计模式最好
![](/icons/86184de.gif)
实现工具
![](/icons/86184dou2.gif)
在本文中
![](/icons/86184dou.gif)
我们将简单了解、体会
![](/icons/86184yi.gif)
下模型-视图-控制器(MVC)设计模式
![](/icons/86184dou.gif)
特别地
![](/icons/86184dou.gif)
我们来看看如何用Struts架构来完美地实现MVC模式
![](/icons/86184dou2.gif)
我们先从理论上简单地描述MVC模式
![](/icons/86184dou.gif)
然后用我们
![](/icons/86184yi.gif)
个简单
![](/icons/86184de.gif)
例子来实现我们自己
![](/icons/86184de.gif)
MVC架构
![](/icons/86184dou2.gif)
在对MVC模式有了了解后
![](/icons/86184dou.gif)
我们用Struts来看这个新技术是如何帮助我们迅速、简单地创建基于MVC
![](/icons/86184de.gif)
Web应用
![](/icons/86184dou2.gif)
模型-视图-控制器(Model-View-Controller)模式
MVC模式最早是在Smalltalk(
![](/icons/86184yi.gif)
种面向对象
![](/icons/86184de.gif)
语言)这种
![](/icons/86184chengxu.gif)
语言设计中被提出来
![](/icons/86184de.gif)
![](/icons/86184dou2.gif)
我们暂时先忽略它
![](/icons/86184de.gif)
历史
![](/icons/86184dou.gif)
集中注意力在关注它怎样被应用在Web应用开发中
![](/icons/86184dou2.gif)
当Java
![](/icons/86184de.gif)
Servlets技术最开始出现
![](/icons/86184de.gif)
时候
![](/icons/86184dou.gif)
![](/icons/86184chengxu.gif)
员们立刻意识到这是
![](/icons/86184yi.gif)
项极其有用
![](/icons/86184de.gif)
技术
![](/icons/86184dou2.gif)
和同时代
![](/icons/86184de.gif)
CGI Web开发技术相比
![](/icons/86184dou.gif)
Servlets更快
![](/icons/86184dou.gif)
更灵活
![](/icons/86184dou.gif)
更可靠
![](/icons/86184dou.gif)
更强大
![](/icons/86184dou2.gif)
然而
![](/icons/86184dou.gif)
开发基于Servlets技术
![](/icons/86184de.gif)
Web应用有
![](/icons/86184yi.gif)
个巨大
![](/icons/86184de.gif)
缺陷--需要使用例如out.pr
![](/icons/86184int.gif)
ln的类
![](/icons/86184de.gif)
语句来输出浏览器识别
![](/icons/86184de.gif)
HTML
![](/icons/86184dou2.gif)
频繁使用这个思路方法是个
![](/icons/86184cuowu.gif)
![](/icons/86184de.gif)
倾向
![](/icons/86184dou.gif)
开发极其浪费时间(
![](/icons/86184chengxu.gif)
员需要经常退出所有应用
![](/icons/86184chengxu.gif)
进行重新编译)
![](/icons/86184dou2.gif)
并且这也使修改Web页面
![](/icons/86184de.gif)
工作也变得很困难
![](/icons/86184dou.gif)
![](/icons/86184yinwei.gif)
Web
![](/icons/86184de.gif)
表现和逻辑在
![](/icons/86184yi.gif)
堆令人恐惧
![](/icons/86184de.gif)
代码中掺乎在
![](/icons/86184yi.gif)
起
![](/icons/86184dou2.gif)
于是作为解决思路方法
![](/icons/86184de.gif)
JavaServer Pages(JSP)出现了
![](/icons/86184dou.gif)
它们将Servlets变成它们运行
![](/icons/86184de.gif)
结果
![](/icons/86184dou2.gif)
应用JSP技术
![](/icons/86184dou.gif)
我们将业务逻辑用
![](/icons/86184yi.gif)
系列夹杂在HTML中
![](/icons/86184de.gif)
<%>标识来表达
![](/icons/86184dou2.gif)
以开发JSP为核心
![](/icons/86184de.gif)
应用尽管比以Servlet为核心
![](/icons/86184de.gif)
应用有进步
![](/icons/86184dou.gif)
但看起来仍然是杂乱无章
![](/icons/86184de.gif)
![](/icons/86184dou.gif)
仍然需要用额外
![](/icons/86184de.gif)
代码来控制应用页面
![](/icons/86184de.gif)
流转
![](/icons/86184dou2.gif)
在充满格式化代码
![](/icons/86184de.gif)
JSP页面上
![](/icons/86184dou.gif)
没有地方来增加这样额外
![](/icons/86184de.gif)
控制代码
![](/icons/86184dou2.gif)
显然需要寻找别
![](/icons/86184de.gif)
出路
![](/icons/86184dou2.gif)
不久人们认识到同时应用JSP和Servlets两种技术开发Web应用是
![](/icons/86184yi.gif)
种不错
![](/icons/86184de.gif)
选择
![](/icons/86184dou2.gif)
毕竟
![](/icons/86184dou.gif)
Servlets擅长处理业务逻辑
![](/icons/86184de.gif)
编程
![](/icons/86184dou.gif)
处理请求
![](/icons/86184dou.gif)
控制功能页面
![](/icons/86184de.gif)
流转
![](/icons/86184dou.gif)
而JSP则是格式化请求处理结果
![](/icons/86184dou.gif)
通过浏览器获得用户输入
![](/icons/86184dou2.gif)
这种工作机制后来变成了人们长说
![](/icons/86184de.gif)
Model2(用JSP或Servlets中单独
![](/icons/86184de.gif)
![](/icons/86184yi.gif)
种实现web应用被称做Model 1).
Model 2不是
![](/icons/86184yi.gif)
项革命性
![](/icons/86184de.gif)
新模式
![](/icons/86184dou.gif)
其实它是来自于Smalltalk语言研发过程中出现
![](/icons/86184de.gif)
MVC模式
![](/icons/86184dou2.gif)
大多数情况下
![](/icons/86184dou.gif)
Java
![](/icons/86184chengxu.gif)
员趋向于可完全互换地使用这两个名词
![](/icons/86184dou2.gif)
什么是MVC模式?
此前我们已对MVC在开发基于Java技术Web应用中
![](/icons/86184de.gif)
使用历史有了初步
![](/icons/86184de.gif)
了解
![](/icons/86184dou.gif)
现在让我们来看看这种模式
![](/icons/86184de.gif)
细节
![](/icons/86184dou2.gif)
本节中
![](/icons/86184dou.gif)
我们来准确地了解
![](/icons/86184yi.gif)
下Models、Views、Controllers
![](/icons/86184de.gif)
确切含义
![](/icons/86184dou.gif)
它们实现
![](/icons/86184de.gif)
任务
![](/icons/86184dou.gif)
以及如何利用它们实现
![](/icons/86184yi.gif)
个简单
![](/icons/86184de.gif)
MVC框架
![](/icons/86184dou2.gif)
我们先来看看Model、View、Controller是如何交互工作
![](/icons/86184de.gif)
![](/icons/86184dou2.gif)
图SM01
![](http://www.crazycoder.cn/WebFiles/20091/b1dc445c-35d8-4b9f-bc08-4c467e01c02e.jpg)
.length
![](/icons/86184kh.gif)
< 1 ) {
errors.add("pw",
![](/icons/86184new.gif)
ActionError("error.pw.required"));
}
![](/icons/86184return.gif)
errors;
} 可以看到
![](/icons/86184dou.gif)
action检查用户在username、password是否输入了"sam"、"password"
![](/icons/86184dou2.gif)
如果输入正确
![](/icons/86184dou.gif)
action指明要
![](/icons/86184diaoyong.gif)
![](/icons/86184de.gif)
下
![](/icons/86184yi.gif)
个view
延伸阅读
最新评论