zoukankan      html  css  js  c++  java
  • 🍃【Spring专题】「原理系列」SpringMVC的运行工作原理(补充修订)

    承接相关之前的SpringMVC的框架技术的流程分析

    初始化流程(initStrategies)

    执行流程

    寻找相关HandlerMapping

    请求到DispatcherServlet类进行执行相关的HandlerMapping集合,找到对应类型的HandlerMapping对象的实现类,如果是一般的采用注解(@RequestMapping)注入的实现类(RequestMappingHandlerMapping)类,

    HandlerMapping实现类之RequestMappingHandlerMapping对象

    找出Spring容器中被@Controller/@RestController注解修饰的bean以及被@RequestMapping注解修饰的类和方法。

    HandlerMapping属性的HandlerMethod对象

    HandlerMethod是Method以及Parameter的helper class。在HandlerMapping中被构造,
    并在HandlerAdapter中被使用。

    HandlerExecutionChain对象

    当获取到对应的HandlerMapping对象的实现类后,接下来返回到DispatcherServlet类对象,需要构建或者获取相关的HandlerExecutionChain对象,内部包含了很多额外组件,例如:interceptor拦截器。

    HandlerAdapter对象

    根据HandlerExecutionChain中的Handler,在对应的HandlerAdapter集合找到支持此Handler的HandlerAdapter,调用相关的HandlerMethod对象方法,使用HandlerAdapter得到ModelAndView对象返回到DispatcherServlet。

    RequestMappingHandlerAdapter

    找到的对应的RequestMapping的HandlerAdapter对象的实现类RequestMappingHandlerAdapter对象操作处理。

    HandlerInterceptor拦截器
    • 前置拦截器:HandlerInterceptor-preHandle
    • 后置拦截器:HandlerInterceptor-postHandle
    HandlerExceptionResolver异常处理

    上面的操作处理方式可能会发生异常,使用HandlerExceptionResolver策略解决。

    RequestMappingHandlerAdapter的处理操作

    • HandlerMethodArgumentResolverComposite:该对象处理和包含了内部多个HandlerMethodArgumentResolver集合。
      • HandlerMethodArgumentResolver:解析相关的方法入口参数的解析机制!
    • HandlerMethodReturnValueHandlerComposite:该对象处理和包含了内部多个的HandlerMethodReturnValueHandler集合。
      • HandlerMethodReturnValueHandler:该对象处理和操作方法的返回值

    HandlerMethodArgumentResolver参数入口的解析器

    RequestParamMethodArgumentResolver

    处理@RequestParam注解修饰的参数:HandlerMethodArgumentResolver的实现类之一:RequestParamMethodArgumentResolver

    RequestResponseBodyMethodProcessor

    处理@RequestBody注解修饰的参数:HandlerMethodArgumentResolver的实现类

    HandlerMethodReturnValueHandler参数返回操作解析器

    RequestResponseBodyMethodProcessor

    处理@ResponseBody注解修饰的返回值:HandlerMethodReturnValueHandler的实现类

    ModelAndViewMethodReturnValueHandler

    处理返回值类型为ModelAndView对象返回值:HandlerMethodReturnValueHandler的实现类

    ViewResolver视图解析器

    将ModelAndView的对象数据与数据页面模板进行解析处理操作ViewResolver对象,生成相关的View对象。并且返回相关的response:freemarker, jsp. json, xml等。

    HandlerInterceptor的收官处理

    最终完成拦截器:afterCompletion方法操作。

    极限就是为了超越而存在的
  • 相关阅读:
    S2-001 远程代码执行漏洞
    Struts2 devMode远程代码执行漏洞检测利用
    CVE-2017-12615(Tomcat PUT方法任意写文件漏洞)
    Medium | LeetCode 343 | 剑指 Offer 14- I. 剪绳子 | 动态规划
    Medium | 剑指 Offer 38. 字符串的排列 | 回溯
    Medium | 剑指 Offer 60. n个骰子的点数 | 动态规划
    Medium | 剑指 Offer 46. 把数字翻译成字符串 | 回溯
    Medium | 剑指 Offer 59
    Hard | LeetCode 239 | 剑指 Offer 59
    Medium | 剑指 Offer 35. 复杂链表的复制
  • 原文地址:https://www.cnblogs.com/liboware/p/15730162.html
Copyright © 2011-2022 走看看