DispatcherServlet工作原理简介说明

转自:
DispatcherServlet工作原理简介说明

下文笔者将讲述DispatcherServlet的工作流程,如下所示: 

  1. 当DispatcherServlet接到请求时,他先回查找适当的处理程序来处理请求
    DispatcherServlet通过一个或者多个处理程序映射,将每个请求映射到处理程序中
    处理程序映射配置在web应用程序的上下文中,是实现了HandlerMapping接口的Bean
    它负责为请求返回一个适当的处理程序(也就是Controller)
    处理程序映射通常根据请求的URL将请求映射到处理程序(Controller)
  2. 一旦DispatcherServlet选择了适当的控制器,它就会调用这个控制器来处理请求
  3. 控制器处理完请求后,会将模型和视图名(有时候是视图对象)返回给DispatcherServlet
    模型包含了控制器要传递给视图进行显示的属性
    如果返回的是视图名称,它会被解析成视图对象再进行呈现
    绑定模型和视图的基本类是ModelAndView
  4. 当DispatcherServlet接收到模型和视图名称时,它会将逻辑视图名称解析成视图对象再进行呈现
    DispatcherServlet从一个或者多个视图解析器中解析视图。视图解析器配置在Web应用程序上下文中,
    是实现了ViewResolver接口的Bean。它的任务是根据逻辑视图名称返回试图对象
  5. 一旦DispatcherServlet将视图名称解析称为试图对象,
    它就会呈现视图对象,并传递控制器返回的模型
    视图的任务是将模型属性展示给用户

处理流程

在配置好DispatcherServlet之后,当请求交由该DispatcherServlet处理时,其处理流程如下

    1. 构造WebApplicationContext被作为属性绑定到请求上以备控制器和其他元素使用
      绑定的默认key为DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE
    2. 绑定地区解析器到请求上以备解析地区时使用,比如生成视图和准备数据时等等v 如果不需要解析地区,则无需使用
    3. 绑定主题解析器到请求上以备视图等元素加载主题时使用
    4. 如果配置了文件流解析器,则会检测请求中是否包含文件流
      如果包含,则请求会被包装为MultipartHttpServletRequest供其他元素做进一步处理。这一部分将会在后面的章节中进行详细说明
    5. 搜索合适的处理器处理请求。找到的话,与该处理器相关联的执行链(前拦截器、后拦截器、控制器等)会被执行以准备模型数据或生成视图
    6. 如果返回了模型对象,下一步就会进行视图的渲染。如果没有任何模型对象返回
      例如因为安全的原因被前拦截器或后拦截器拦截了请求,那么就没有视图会生成,因为该请求已经结束了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值