Spring MVC 原理 - DispatcherServlet调用完整过程(下)

接上一篇:Spring MVC 原理 - DispatcherServlet调用完整过程(上)


上一篇到440行返回结果result.



返回result之后,使用result去获取ModelAndView,执行方法getModelAndView:



该方法主要通过result返回值来判断:


当前方法是带ResponseBody注解的,所以执行到这里:


进去方法:


这里是根据http类型做出相应的输出:


用户配置的:


接收的类型:


写的方法:


这里配置的json格式,所以会进入JSON方法:


写入ResponseBody后,返回mav:


最后返回之前调用handler的地方,之后会有一些不同种类的拦截器方法:



拦截器如:




还有一些处理不同异常情况的拦截器。


系统默认都会去执行一个拦截器,这个拦截器基本上都是空方法,是一个private类:



返回调用doDIspatch的地方:



返回到doService的地方:



最后回到httpservlet的service方法:




到这里就完成了一次完整的调用过程。


可以发现,整个过程的流程是比较清晰,程序启动时会根据mvc的配置和spring配置来处理配置信息和注解的类。

Servlet处理请求,通过request(主要是url)来获取handler,之后最主要的一个部分就是获取需要注入的参数,最后调用用户方法,处理返回结果。


整个过程中麻烦的地方就是在一些细节的处理上,这些细节未必一开始就有的,一开始应该是一个主要的流程,后续发现问题或者为了通用性做的改进。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

isea533

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值