我是靠谱客的博主 香蕉战斗机,最近开发中收集的这篇文章主要介绍SpringMVC的完整执行流程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Java知识点总结:想看的可以从这里进入

目录

      • 2.5、SpringMVC流程

2.5、SpringMVC流程

Spring MVC 框架主要由 DispatcherServlet、处理器映射、控制器、视图解析器、视图等组成,它和其他的MVC框架一样,以请求为驱动,围绕Servlet分派请求和提供功能,DispatcherServlet就是一个实际的Servlet(底层继承HttpServlet)。

根据 DispatcherServlet 内部方法及其各组件总结SpringMVC的流程:

image-20210803171626561

  1. 客户端发送一个请求到前端控制器DispatcherServlet。

  2. 前端控制器DispatcherServlet 会对请求URL进行解析,得到请求资源标识符(URI),然后进行判断

    • 若映射不存在

      1. 再判断是否配置了 mvc:default-servlet-handler 静态资源处理,没有配置就出现 404错误
      2. 如果配置了 mvc:default-servlet-handler 静态资源处理,则进行访问静态资源,如果还没有找到,出现404
    • 映射存在,会调用映射器HandlerMapping来进行映射处理,根据请求路径查找相应的Handler对象(处理器)。

  3. 映射器HandlerMapping找到对应的Handler之后,返回该Handler配置的所有相关的对象,即处理器+拦截器组成的 执行链,最后以 HandlerExecutionChain 执行链对象返回给DispatcherServlet

  4. DispatcherServlet 接收到执行链之后,调用HandlerAdapter适配器去执行相应的Handler,适配器准备参数和环境后,调用Handler,开始处理业务逻辑。此时将开始执行拦截器的 preHandler(…)方法【正向顺序执行】

  5. 先开始提取Request中的模型数据,然后 执行Controller 方法内的业务逻辑,开始处理请求,这期间会根据消息转换机制中的顺序对传递的数据进行校验

    • 数据类型转换:对请求消息进行数据转换。将请求中的参数转换为控制器方法指定的数据类型,然后再将转换后的参数值传递给控制器方法的形参。
    • 数据格式化:对请求消息进行数据格式化,将数据转换成指定的格式(如:金钱¥100000、日期yyyy-MM-dd 等)
    • 数据验证:主要验证数据是否合法,验证结果存储到BindingResult或Error中
  6. Handler 执行完成后会得到一个ModelAndView,并将其返回给DispatcherServlet。此时将开始执行拦截器的postHandle(…)方法【逆向顺序执行】。

  7. DispatcherServlet 接收到ModelAndView之后,调用视图解析器ViewResoler进行视图解析。视图解析器根据逻辑视图名找到真正的View视图,解析后返回给DispatcherServlet。

  8. DispatcherServlet 接收到视图之后,会根据ModelAndView中的model(数据)进行视图渲染。此时执行拦截器的afterCompletion(…)方法【逆向顺序执行】。

  9. 最后将渲染完成的最终的HTML页面,响应给客户端用户。

最后

以上就是香蕉战斗机为你收集整理的SpringMVC的完整执行流程的全部内容,希望文章能够帮你解决SpringMVC的完整执行流程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部