1:首先客户端发送一个
http请求,web服务器接受这个请求,然后web容器交给
DispatcherSevlet处理。
2:
DispatcherSevlet将负责将请求分发。DispatcherSevlet可以认为是spring提供的前端控制器,所有的请求都要经过他来进行统一的分发。
3:在DispatcherSevlet将请求分发给
spring controller之前,需要借助于spring提供的HandleMapping定位到具体的controller。(
HandleMapping是这样的一种对象,他能够完成客户请求和controller之间的映射。在
structs中,这种映射是通过struts-config.xml文件完成的。spring为controller提供了若干实现,例如:BeanNameUrlHandlerMappin
g有,SimpleUrlHandlerMapping,CommonsPathMapHandlerMap
ping。)
4:
spring controller将处理来自DispatcherSevlet的请求。spring的controller类似于
structs的action。能
够接受HttpServletRequest和HttpServletResponse。spring为controller提供了若干实现类,由于controller要为
并发用户处理上述请求,因此实现controller接口时,
必须保证线程安全并且可重用。controller将处理用户请求,这和structs中的action是一致的。
5:一旦controller处理完用户请求,则返回
ModelAndView对象给DispatcherSevlet前端控制。ModelAndView包含了
模型(model)和视图(view)。从宏观角度来看,DispatcherSevlet是整个web应用的控制器。从微观来看,controller是单个http请求的控制器。而
ModelAndView是http请求过程中返回的模型和视图。
6:ModelAndView中包含了
视图逻辑名与模型数据信息。DispatcherSevlet通过
ViewResolver完成逻辑视图名到真实视图对象的解析工作。
7:当得到真实对象的view,DispatcherServlet就使用这个View对象对
ModelAndView中的模型数据进行视图渲染。然后将渲染后的结果返回给客户。
文章转载:http://blog.sina.com.cn/s/blog_e3734cfe0102xmsf.html