MVC思想概述
MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)、Controller(控制器),这三个部分以最少的耦合协同工作,从而提高应用的可扩展性及可维护性。
在经典的MVC模型中,事件由控制器处理,控制器根据事件的类型改变模型或视图,反之亦然。具体地说,每个模型对应一系列的视图列表,这种对应关系通常采用注册来完成,即:把多个视图(View)注册到同一个模型(Model),当模型发生改变时,模型向所有注册过的视图发送通知,接下来,视图从对应的模型中获得信息,然后完成视图显示的更新。
MVC有一下特点:
多个视图可以对应一个模型。按MVC设计模式,一个模型对应多个视图,可以减少的复制及代码的维护量,一旦发生改变,也易于维护
模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术,例如:JSP页面、Excell文档等。
应用被分隔为三层,降低各层之间的耦合,提供了应用的可扩展性。
控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同的请求。因此,控制层可以说是包含了用户请求权限的概念。
MVC更符合软件工程化管理精神。
MVC模式的java Web实现
如下是Struts2的MVC实现浏览器请求/服务器响应的完整流程图
Struts2是一个非常优秀的MVC框架。Struts2允许使用普通的、传统的Java对象作为Action;Action的execute()方法不在于Servlet API耦合,因而更易测试;支持更多的视图技术;基于AOP思想的拦截器机制,提供了极好的可扩展性;更强大、更易用的输入校验功能;整合的Ajax支持等,这些都是Struts2的巨大吸引力。
Servlet作为前端控制器,负责接受客户端发送的请求,在Servlet中只包含控制逻辑和简单的前端处理;然后,调用后端JavaBean来完成实际的逻辑处理;最后转发到相应的JSP页面处理显示逻辑。Jsp不再承担控制器的责任,它仅仅是表现层角色,仅仅用于将结果呈现给用户,Jsp页面的请求与Servlet(控制器)交互,而Servlet负责与后台的JavaBean通信。模型(Model)由JavaBean充当,视图(View)由Jsp页面充当,而控制器(Controller)则由Servlet充当。
原文地址:http://blog.csdn.net/kakarot5/article/details/44462317