SpringMVC运行流程

SpringMVC运行流程:
首先我们点击页面的链接 发送请求经过 springDispatcherServlet
SpringDispatcherServlet会判断springMvc 中是否有其对应的映射,如果没有
则 看是否配置了 如果配置了 说明请求是静态的资源文件 ,则直接找到目标资源文件响应。
如果 SpringDispatcherServlet发现springMvc 中有其对应的映射,则 由
这里写图片描述
这里写图片描述
这个HandlerExecutionChain 包含两部分内容 目标处理的handler 和 一些拦截器
获取完 mappedHandler 再获取 这里写图片描述
也就是 对应的handler适配器 通俗点说 就是 真正干活的handler
然后去调用拦截器的PreHandle 方法
这里写图片描述
这个里面相当于 我调用了 所有拦截器的preHandle 方法

preHandle 方法调用完之后 , 调用目标的hanle方法 得到ModelAndView 对象

这里写图片描述
这里写图片描述

上传图片好不方便 接下来 详细描述 可以跟面试官聊的:
点击链接,请求首先会到我们在web.xml 中配置的 DispatcherServlet 中,在dispatcherServlet 中我们首先会查看springMvc配置文件中有没有对应资源的映射,如果没有 ,则看springmvc配置文件中有没有配置如果配置了,则直接响应请求(这是对于一些静态的资源文件来说的)
当然如果springmvc配置文件中有对应的资源映射文件,则在dispatcherServlet的doDispatcher()方法中 通过handlerMapping 获取handlerExecutionChain(mappedHandler) 接着通过得到的mappedHandler 得到我们的HandlerAdapter(ha),然后去执行handlerExcetionChain中拦截器集合的preHandle()方法。当执行完所有的preHandle方法后,接下来执行获取的HandlerAdapter(ha)的handle()方法(也就是我们的目标方法)。执行完目标方法(handler)返回modelAndView对象(mv),接着根据返回的mv 对象 执行handlerExecutionChain中的拦截器集合的postHandle()方法。在postHandle()判断有没有发生异常,如果有异常,则重新得到异常对应的modelAndView 对象exMv
否则 调用render(mv,request,response)正常渲染页面,渲染完页面完成请求响应 最后在执行集合拦截器中的afterCompletion()方法.
然后就欧了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值