Spring MVC 执行原理

SpringMVC运行原理:

1. 启动Web容器后(Tomcat), Web容器会根据web.xml文件配置信息中找到SpringMVC核心控制器DispacherServlet并初始化; 

2. 当一个请求进入Web容器(Tomcat)后, Web容器会将当前请求移交给DispacherServlet来进行处理,这是的DispacherServlet对象充当的是一个110报警总指挥的角色,来负责处理请求(接警)和响应请求(办案)时对各种组件(警力)进行调度

3. DispacherServlet对象首先在springmvc-servlet.xml中配置的信息找到对应的处理器映射(HandlerMapping):

  1. 默认情况下使用BaseNameUrlHandlerMapping,然后HandlerMapping会根据请求的URL地址在Spring容器中找到对应的控制器(继承完AbstractController的Controller), 然后调用被重写的protected ModelAndView handlerRequestInternal(HttpServletRequest request,HttpServletResponse response)方法
  2. 如果我们在springmvc-servlet.xml文件中配置了具体的处理器映射(HandlerMapper)和处理器设配器(HandlerAdapter),例如:在springmvc-servlet.xml文件中我们开启注解式处理器映射<mvc:annotation-driven/>后, 在Spring 3.2版本以前我们使用DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter,在Spring 3.2版本以后, 使用RequestMappingHandlerMapping和RequestMappingHandlerAdapter, 这时HandlerMapping会根据URL找到对应的Controller,并将其进行实例化,然后DispacherServlet会将控制器示例(handler)和请求的信息(URL,请求参数,请求方法,请求头等信息)交由调用处理器设配器(HandlerAdapter)进行封装, 然后调用public ModelAndView handler(HttpServletRequest request,HttpServletResponse response,Object handler)方法

对当前请求进行处理,在处理的过程中要进过HttpMessageConverter消息转换、数据转换、数据绑定方法的入参(实际处理业务的Controller中的Action),数据验证的操作, 然后进行实际处理业务的action并返回给DispacherServlet一个ModelAndView对象;

4. ModelAndView对象包含要显示的逻辑视图的名称和渲染视图时需要用到的数据模型, SpringMVC支持多视图结果返回, 我们也可以直接返回一个视图,不返回数据,反之亦然, 或者返回其他类型的数据(json,xml,pdf)等

5. DispacherServlet核心控制器会根据返回的逻辑视图名称, 调用视图解析器找到真正显示结果的实际视图进行渲染, 如果有数据也会同时将数据一起呈现在视图中, 最终将渲染后的视图响应给客户端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值