码迷,mamicode.com
首页 > 编程语言 > 详细

Spring MVC请求处理过程

时间:2018-04-09 13:15:50      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:std   src   image   加载   dad   流程   isp   eric   实现类   

---恢复内容开始---

在使用spring MVC的时候一般都需要在web.xml中配置请求分发

技术分享图片

所以我们大致清楚DispatcherServlet是spring MVC的核心类,也可以看出需要运行在Servlet容器中。

技术分享图片

GenericServlet 实现了Servlet接口,为所有请求的模板。

一般我们使用tomcat作为Servlet容器,那么看一下tomcat是如何处理请求的

 

技术分享图片

   可以看出tomcat是在过滤器链中调用ApplicationFilterChain的internalDoFilter来发起一个请求调用的。

  1、调用HttpServlet 的 service

  2、调用FrameworkServlet的service - doGet  -  processRequest

  3、调用DispatcherServlet的 doService - doDispatch

  4、获取methodAdpter

  5、调用methodAdpter的handle方法(反射调用Controller的方法)

  这大致是一个请求如何从Servlet容器到业务本身实现类的过程。

  具体的分发和业务处理大部分都在DispatcherServlet 中实现:

    在doService中设置请求属性,包含FlashMap(重定向使用),上下文

    在doDispatch中 1、检查请求是否有multipart,如果有则要包装一次请求,请求结束也会清理multipart资源

           2、获取Handler链

           3、获取handler的Adapter 

           4、拦截器pre处理 

           5、handler处理,得到ModelAndView

           6、拦截器post处理

           7、将ModelAndView或Exception都处理成ModelAndView,然后reander(参考配置的ViewResolver的处理)

           8、ModelView根据request的RequestDispatcher(Servlet容器实现)来实现响应处理,输出页面。

  大致请求与分发的流程就是这样,后面记录一下Bean的加载、注入和参数绑定

Spring MVC请求处理过程

标签:std   src   image   加载   dad   流程   isp   eric   实现类   

原文地址:https://www.cnblogs.com/souyoulang/p/8758867.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!