介绍下SpringMVC请求处理的流程

提问者:帅平 问题分类:面试刷题
介绍下SpringMVC请求处理的流程
3 个回答
帅的被人砍
帅的被人砍
从源码的角度介绍流程如下:
1、统一的处理入口,对应SpringMVC下的源码是在DispatcherServlet下实现的
2、该对象在初始化就会把映射器、适配器、视图解析器、异常处理器、文件处理器等等给初始化掉
3、至于会初始化哪些具体实例,看下DispatcherServlet.properties就知道了,都配置在那了
4、所有的请求其实都会被doService方法处理,里边最主要就是调用doDispatch方法
5、通过doDispatch方法我们就可以看到整个SpringMVC处理的流程
6、查找映射器的时候实际就是找到「最佳匹配」的路径,具体方法实现我记得好像是在lookupHandlerMethod方法上
7、从源码可以看到「查找映射器」实际返回的是HandlerExecutionChain,里边有映射器Handler+**List
8、前面提到的**前置处理和后置处理就是用的HandlerExecutionChain中的**List
9、获取得到HandlerExecutionChain后,就会去获取适配器,一般我们获取得到的就是RequestMappingHandlerAdapter
10、在代码里边可以看到的是,经常用到的@ResponseBody和@Requestbody的解析器
11、就会在初始化的时候加到参数解析器List中
12、得到适配器之后,就会执行**前置处理
13、**前置处理执行完后,就会调用适配器对象实例的hanlde方法执行真正的代码逻辑处理
14、核心的处理逻辑在invokeAndHandle方法中,会获取得到请求的参数并调用,处理返回值
15、参数的封装以及处理会被适配器的参数解析器进行处理,具体的处理逻辑取决于HttpMessageConverter的实例对象
发布于:1年前 (2023-03-16) IP属地:四川省
雨落听船眠
雨落听船眠
简要的类走向如下:
DispatcherServlet(入口)->DispatcherServlet.properties(会初始化的对象)->HandlerMapping(映射器)->HandlerExecutionChain(映射器+**List) ->HttpRequestHandlerAdapter(适配器)->HttpMessageConverter(数据转换)
发布于:1年前 (2023-03-16) IP属地:四川省
你以为我的心是不锈钢么
你以为我的心是不锈钢么
SpringMVC请求处理的流程如下:
1):首先有个统一处理请求的入口
2):随后根据请求路径找到对应的映射器
3):找到处理请求的适配器
4):**前置处理
5):真实处理请求(也就是调用真正的代码)
6): 视图解析器处理
7):**后置处理

完整流程如下:
发布于:1年前 (2023-03-16) IP属地:四川省
我来回答