看Spring MVC的程序执行入口 DispatcherServlet,入口就是核心方法doDispatch

Spring MVC 源码解析

入口doDispatch方法

Spring MVC 源码解析

1.如果是文件上传,就处理文件上传请求  processedRequest = checkMultipart(request);

2. mappedHandler = getHandler(processedRequest); 解析请求,来获取处理请求的handler

3.Spring MVC 源码解析

从handlerMapping里面获取对应的handler,如果找不到对应的handler,就立刻返回

4.继续根据获取的handler,获取handlerAdapter

Spring MVC 源码解析

5.在controller的方法执行之前,先执行拦截器的相关方法,如果执行拦截器相关方法失败,就return返回,不继续执行Spring MVC 源码解析

Spring MVC 源码解析

6.前置工作都结束了,开始执行

  mv = ha.handle(processedRequest, response, mappedHandler.getHandler()); 

执行HandlerAdapter对象的handler方法,返回ModelAndView

7.mappedHandler.applyPostHandle(processedRequest, response, mv);


Spring MVC 源码解析

8. 进行视图解析

processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);

 

Spring MVC 源码解析

调用render方法,对mv进行渲染

相关文章: