springMVC处理请求流程

4 篇文章 0 订阅

Dispatcher接收到了客户的请求,遍历所有的HandlerMapping集合,找出被@Controller注解的bean和被@Request注解的类和方法,根据请求的路径,参数等一系列条件,找到符合条件的HandlerMapping,并得到Handler执行链,其中包括拦截器和controller方法,是一条拦截+处理链。

dispatcherServlet让把请求放进入链中,先执行所有拦截器的preHandle方法,执行完后准备去真正的handle方法(即controller的对应方法)。首先使用解析类解析handle方法的参数,包括@RequestParam、@RequestBody、@PathVariable注解的参数,从请求中提取出这些参数的值,并把它们连同请求一起交给handle方法,在handle中执行真正的业务逻辑。在handle方法处理结束之后,再使用一些处理类处理handle方法的返回值,处理完后合并进响应,再去执行所有拦截器的postHandle方法。之后把返回值交给dispatcherServlet,如果返回的是一个ModelAndView,则把它交给视图解析器去解析,由它解析出相应的视图(即html、jsp、xml等)并写到响应中,此时还要执行所有拦截器的afterCompletion再做处理。

然后,把最终处理完成的响应返回给客户。

另:过滤器在dispatcherServlet的前面,如果有过滤器,则请求进来时先进过滤器链,再进dispatcherServlet。响应走时先通过dispatcherServlet,然后再通过过滤器链
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值