面试必考题————SpringMVC的执行流程

SpringMVC 框架

        ​SpringMVC 是一个基于 Java 的实现了 MVC 设计模式的请求驱动类型的轻量级 Web 框架,通过把 Model,View,Controller 分离,将 Web 层进行职责解耦,把复杂的 Web 应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。 简而言之,SpringMVC 就是将我们原来开发在 Servlet 中的代码拆分了,一部分由 SpringMVC 完成,一部分由我们自己完成。

SpringMVC执行流程中的几个重要角色:

  • DispatcherServlet前端控制器,不需要工程师开发,由框架提供

        作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求

  • HandlerMapping处理器映射器,不需要工程师开发,由框架提供

         作用:根据请求的urlmethod等信息查找Handler,即控制器方法

  • Handler处理器,需要工程师开发(也就是我们写在controller中的控制器方法)
        作用:在DispatcherServlet 的控制下 Handler 对具体的用户请求进行处理
  • HandlerAdapter处理器适配器,不需要工程师开发,由框架提供
        作用:通过HandlerAdapter 对处理器(控制器方法)进行执行
  • ViewResolver视图解析器,不需要工程师开发,由框架提供
        作用:进行视图解析,得到相应的视图,例如:ThymeleafView InternalResourceView、         RedirectView
  • View视图
        作用:将模型数据通过页面展示给用户

SpringMVC执行流程

  1. 用户发送请求到前端控制器(DispatcherServlet)。
  2. 前端控制器 ( DispatcherServlet ) 收到请求调用处理器映射器 (HandlerMapping),去查找处理器(Handler)。
  3. 处理器映射器(HandlerMapping)找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。
  4. 前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)。
  5. 处理器适配器(HandlerAdapter)去调用自定义的处理器类(Controller)。
  6. 自定义的处理器类(Controller)将得到的参数进行处理并返回结果给处理器适配器(HandlerAdapter)。
  7. 处理器适配器 ( HandlerAdapter )将得到的结果返回给前端控制器 (DispatcherServlet)。
  8. 前端控制器(DispatcherServlet )将 ModelAndView 传给视图解析器 (ViewReslover)。
  9. 视图解析器(ViewReslover)将得到的参数从逻辑视图转换为物理视图并返回给前端控制器(DispatcherServlet)。
  10. 前端控制器(DispatcherServlet)调用物理视图进行渲染并返回。
  11. 前端控制器(DispatcherServlet)将渲染后的结果返回并响应到客户端。

流程如图

 SpringMVC拦截器的执行位置

1.preHandler:如果成功获得HandlerAdapter,此时将开始执行拦截器的preHandler(…)方法【正向】

2.postHandle:Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象。此时将开始执行拦截器的postHandle(...)方法【逆向】。

3.afterCompletion:渲染视图完毕执行拦截器的afterCompletion(…)方法【逆向】。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙城桥少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值