SpringMVC 处理请求的整个过程
来源:互联网 发布:淘宝写给买家温馨的话 编辑:程序博客网 时间:2024/05/16 05:25
1.整个过程始于客户端发出的一个HTTP请求,Web应用服务器接受到这个请求,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),Web容器将该请求转交给DispatcherServlet处理;
2.DispatcherServlet接受到这个请求后,将根据请求的信息(包括URL、HTTP方法、请求报文头、请求参数、Cookie等)及HandlerMapping的配置找到处理请求的处理器(Handler)。可将HandlerMapping看成路由控制器,将Handler看成目标主机。值得注意的是:SpringMVC中并没有定义一个Handler接口,实际上任何一个Object都可以成为请求处理器。
3.当DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。HandlerAdapter是SpringMVC的框架级接口,顾名思义,HandlerAdapter是一个适配器,它用统一的接口对各种Handler方法进行调用。
4.处理器完成业务逻辑的处理后将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和模型数据信息。
5.ModelAndView中包含的是“逻辑视图名”而非真正的视图对象,DispatcherServlet借由ViewResolver完成逻辑视图名到真实视图对象的解析工作。
6.当得到真实的视图对象View后,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。
7.最终客户端得到的响应消息,可能是一个普通的HTML页面,也可能是一个XML或JSON串,甚至是一张图片或一个PDF文档等不同的媒体形式。
2.DispatcherServlet接受到这个请求后,将根据请求的信息(包括URL、HTTP方法、请求报文头、请求参数、Cookie等)及HandlerMapping的配置找到处理请求的处理器(Handler)。可将HandlerMapping看成路由控制器,将Handler看成目标主机。值得注意的是:SpringMVC中并没有定义一个Handler接口,实际上任何一个Object都可以成为请求处理器。
3.当DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。HandlerAdapter是SpringMVC的框架级接口,顾名思义,HandlerAdapter是一个适配器,它用统一的接口对各种Handler方法进行调用。
4.处理器完成业务逻辑的处理后将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和模型数据信息。
5.ModelAndView中包含的是“逻辑视图名”而非真正的视图对象,DispatcherServlet借由ViewResolver完成逻辑视图名到真实视图对象的解析工作。
6.当得到真实的视图对象View后,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。
7.最终客户端得到的响应消息,可能是一个普通的HTML页面,也可能是一个XML或JSON串,甚至是一张图片或一个PDF文档等不同的媒体形式。
0 0
- SpringMVC 处理请求的整个过程
- 网页http请求的整个过程
- SpringMVC处理请求的流程
- SpringMVC处理请求的流程
- SpringMVC处理请求的流程
- SpringMVC-请求的处理流程
- springMVC处理请求的流程
- Ajax实现异步请求的整个过程
- Ajax实现异步请求的整个过程
- springMVC处理Ajax请求的一个错误
- SpringMVC 处理客户端请求的过程
- springMVC处理ajax请求时的404
- 基于Java配置的springMvc处理请求
- 分析一次springmvc的执行过程,springmvc如何处理请求
- SpringMVC请求处理操作
- SpringMVC请求处理流程
- SpringMVC处理AJAX请求
- SpringMVC 请求处理流程
- Ubuntu16.04搭建LAMP架构服务器
- binlog,redo log,undo log区别
- switch语句byte、long、String
- Requesting Permissions at Run Time
- 如何在一个cpp中调用另一个cpp中的类?
- SpringMVC 处理请求的整个过程
- 大型网站的特点
- &和&&的区别
- C语言8大排序算法以及复杂度分析
- magent + memcached 集群测试
- android 自定义view实现自动相册功能
- php入门小知识汇总
- +=运算
- Jquery获取时间的常用方法