当前位置: 首页spring正文 本文介绍: Spring MVC 请求的完整流程 SpringMVC 请求流程 一、DispatcherServlet 是一个 Servlet 二、Spring MVC 的完整请求流程 Spring MVC 框架是基于 Servlet 技术的。以请求为驱动,围绕 Servlet 设计的。Spring MVC 处理用户请求与访问一个 Servlet 是类似的,请求发送给 Servlet,执行 doService 方法,最后响应结果给浏览器完成一次请求处理。 一、DispatcherServlet 是一个 Servlet DispatcherServlet 是核心对象,称为中央调度器(前端控制器 Front Controller)。负责接收所有对 Controller 的请求,调用开发者的 Controller 处理业务逻辑,将 Controller 方法的返回值经过视图处理后响应给浏览器。 DispacherServlet 作为 Spring MVC 中的 Controller 的职责: ① 是一个门面,接收请求,控制请求的处理过程。所有请求都必须由 DispatcherServlet 控制。Spring MVC 对外的入口。可以看作门面设计模式。 ② 访问其他的控制器。这些控制器处理业务逻辑。 ③ 创建合适的视图,将 ② 中得到的业务结果放到视图,响应给用户。 ④ 解耦了其他组件,所有组件只与 DispatcherServlet 交互。彼此之间没有关系。 ⑤ 实现 ApplicationContextAware,每个 DispatcherServlet 都拥有自己的 WebApplicationContext,它继承了 ApplicationContext。WebApplicationContext 包含了 Web 相关的 Bean 对象,比如开发人员用注释 @Controller 的类,视图解析器,视图对象等等。DispatcherServlet 访问容器中的 Bean 对象。 ⑥ Servlet + Spring IOC 组合。 DispatcherServlet 的继承关系图: 二、Spring MVC 的完整请求流程 ① 红色 DispatcherServlet 是框架创建的核心对象(可配置它的属性 contextPath)。 ② 蓝色的部分框架已经提供多个对象。开发人员可自定义,替换默认的对象。 ③ 绿色的部分是开发人员自己创建的对象,控制器 Controller 和视图对象。 流程说明: (1)DispatcherServlet 接收从客户端发送的请求。判断是普通请求还是上传文件的请求。 (2)DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。 (3 HandlerMapping 根据请求 URI 找到对应的控制器以及拦截器,组装成 HandlerExecutionChain 对象。将此对象返回给 DispatcherServlet 做下一步处理。 (4)DispatcherServlet 调用 HandlerAdapter 处理器适配器。这里是适配器设计模式,进行接口转换,将对一个接口调用转换为其他的方法。 (5)HandlerAdapter 根据执行控制器方法,也就是开发人员写的 Controller 类中的方法,并返回一个 ModelAndView 对象。 (6)HandlerAdapter 返回 ModelAndView 给DispatcherServlet。 (7)DispatcherServlet 调用 HandlerExceptionResolver 处理异常,有异常返回包含异常的 ModelAndView。 (8)DispatcherServlet 调用 ViewResolver 视图解析器来解析 ModelAndView。 (9)ViewResolver 解析 ModelAndView 并返回真正的 View 给 DispatcherServlet。 (10)DispatcherServlet 将得到的视图进行渲染,将 Model 中的数据填充到 request 域。 (11)返回给客户端响应结果。 原文地址:https://blog.csdn.net/weixin_65032328/article/details/135888211 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若转载,请注明出处:http://www.7code.cn/show_63727.html 如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除! 主题授权提示:请在后台主题设置-主题授权-激活主题的正版授权,授权购买:RiTheme官网显示所有内容声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。mvcservletspring 代码007普通 打赏 收藏 海报 链接