
源码寻找:
1.找到AbstractDispatcherServletInitializer类
2.找到registerDispatcherServlet方法



1.用户发起请求后就会到达前端控制器DispatcherServlet

2.前端控制器获取请求后,就会调用doDispatch方法里的getHandler。

3.获取匹配的HandlerMapping(处理器映射器)

4.处理器映射器就会根据请求的URL,找到对应的Handler处理器(如果是基于注解开发,找到的就是HandlerMethod反射对象)和拦截器链,将处理器对象及拦截器链(Interceptors)一并组成处理器执行链HandlerExecutionChain返回给前端控制器


5.前端控制器通过方法getHandlerAdapter获取适配器(底层会进行适配判断,通过适配器的supports方法),通过supports方法


6.前端控制器将执行链中的处理器对象交给处理器适配器(HandlerAdapter)执行,而执行链中的拦截器由dispatcherServlet直接调用执行链的方法执行

7.适配器通过调用handle方法执行处理器方法,执行完返回模型视图(ModelAndView)给前端控制器,如果使用了@ResponseBody注解标识类或方法,那么返回的ModelAndView为null,就直接响应结果给请求端(如果返需要返回JSON数据,那么底层会调用消息转换器进行JSON转换)


8.如果ModelAndView不为空,那么前端控制器将模型视图传给视图解析器(ViewReslover)

9.视图解析器解析模型视图后(拼接前缀和后缀)返回具体的View给前端控制器
10.前端控制器对View进行视图渲染(将模型数据填充到视图中),响应用户
本文详细描述了SpringMVC中从用户请求到视图渲染的处理过程,涉及DispatcherServlet、HandlerMapping、HandlerExecutionChain、HandlerAdapter和ViewResolver等关键组件的作用和交互。

被折叠的 条评论
为什么被折叠?



