当客户端提交请求至服务端时,Struts2的FileterDispatcher(核心控制器)会负责拦截,并且内置拦截器会负责对请求中的参数做一系列的预处理工作(包含:解析参数、类型转换、DTO封装等)。然后提交给具体的Action(业务控制器)调用业务实现直至返回处理结果,最后Action根据处理结果forward到具体的View层组件。
一、MVC模型介绍
MVC(Model、View、Controller)是在程序开发过程中衍生出的一套程序设计思想,它由三个单词的缩写组成,分别为:模型层(Model)、表现层(View)和控制层(Controller)。至于使用MVC的目的,就在于它能够更明确的定义Web系统的组件分工。 在早期的Java Web应用开发过程中,JSP既要负责页面的显示工作,同时也要负责实际的业务处理。从而导致了整个JSP页面出现高耦合、低复用等诸多弊端因素。笔者相信这些痛苦对于每个Web 程序员来说都是不言而喻的,但随着MVC架构的出现,程序的扩展性和伸缩性都将得到更好的保障。
MVC架构工作流程图:
在Spring MVC的工作流程机制中,客户端的请求响应/分发工作全由DispatcherServlet(前端控制器)负责,DispatcherServlet仅只是一个普通的Servlet。当DispatcherServlet成功拦截客户端请求后,便会加载WEB-INF目录下的Spring MVC配置文件。然后根据HandlerMapping的实例(配置文件中的映射信息)分发给对应的Controller(业务控制器)处理。Controller在调用具体的业务实现之前,会负责一系列的参数预处理工作(包含:解析参数、类型转换、封装DTO等)。最后Controller根据处理结果forward到具体的View层组件。
在Struts2.x中,核心控制器我们称之为FileterDispatcher,由它负责请求拦截及调用内置的拦截器完成一些参数的预处理工作。而DispatcherServlet作为Spring MVC的前端控制器,和Struts2.x中的FileterDispatcher作用类似。由它负责请求拦截,及根据映射文件中的描述信息分发任务给具体的Controller处理。在Spring MVC中DispatcherServlet作为Servlet存在,也就是说我们必须在web.xml文件中对DispatcherServlet进行配置。
参见:http://gao-xianglong.iteye.com/blog/1771190
大道至简SSH:http://blog.csdn.net/column/details/zj-ssh.html