SpringMvc流程

本文详细解析了Spring Web MVC的工作流程,从请求被DispatcherServlet接收开始,直至响应完成。涉及HandlerMapping、HandlerAdapter等核心组件的功能及交互过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近看《Spring源码深度理解》,看到了SpringMvc请求流程,记录下:

这张Spring流程图我借鉴了网上各位前辈的分析,加上自己的理解绘制的,如有侵权勿怪,如果各位觉得有帮助,也欢迎保存 :)

总结下我对SpringWebMvc流程:

  Step1.请求被前端控制器DispatcherServlet接收;

  Step2.前端控制器DispatcherServlet根据自身的handlerMappings集合查找可用的handler,本质也就是Controller,当然现在最常见的就是@Controller注解的类;

  Step3.匹配的HandlerMapping查找到合适的handler对象,并封装成HandlerExecutionChain对象(含有一个handler对象,以及若干个HandlerInterceptor拦截器);

  Step4.前端控制器DispatcherServlet遍历自身的handlerAdapters集合,调用HandlerAdapter接口的support方法,查找匹配的handlerAdapter对象;

  Step5.返回匹配的HandlerAdapter给前端控制器;

  Step6. 首先执行的是HandlerExecutionChain中的HandlerInterceptor,顺序执行其preHandle方法;有一个返回false,后面流程不再执行;

  Step7.匹配的handlerAdapter调用其handle方法,执行业务逻辑,并且返回DispatcherServlet  ModelAndView对象(当然ModelAndView只是最基本的对象,还有多种返回可以接受);

  Step8.后序遍历HandlerExecutionChain中的HandlerInterceptor,执行其postHandle方法;

  Step9. 前端控制器DispatcherServlet根据自身的viewResolvers寻找合适的视图解析视图,生成View对象,常见的JSP技术解析JSP文件路径等等,相应的其他技术替换视图解析器即可;

  Sep10.视图解析器返回View对象给前端控制器,前端控制器根据View对象进行渲染,(比如将属性设置到request中);

  Step11.后序遍历HandlerExecutionChain中的HandlerInterceptor,执行其afterCompletion方法

 

流程大体就是这样,如果想要DEBUG流程的话,可以从DispatchServlet的doDispatch方法开始分析。

 

转载于:https://www.cnblogs.com/lvbinbin2yujie/p/10316561.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值