• 中文
    • English
  • 注册
  • 查看作者
  • Spring Boot「20」从 DispatchServlet 开始一个请求的处理过程

    01-DispatchServlet

    DispatchServlet是Spring MVC的核心,其遵循前端控制器设计模式。它是Spring实现的一个servlet,在servlet容器中,负责将请求路由到其他的组件当中。

    01.1-DispatcherServlet处理请求的基本流程

    [ ] 描述了一个请求到达DispatchServlet后的基本流程:

    1. 请求离开浏览器到达DispatchServlet

    2. DispatchServlet负责根据请求携带的URL信息,确定请求被路由到哪里

    3. DispatchServlet将请求转交给2.中选中的控制器

    4. 控制器返回模型和视图名给DispatchServlet

    5. DispatchServlet根据视图名确定具体的视图实现

    6. 具体的实现将4.中的逻辑视图渲染成真正的视图

    7. 视图被返回给浏览器

    了解DispatchServlet处理请求的基本流程后,不纠结具体的实现细节,让我们先来看一下在Spring MVC中如何配置DispatchServlet?

    01.2-Spring MVC中配置DispatcherServlet

    1. 通过实现 接口的方式

    1. 通过继承 类的方式

    1. 通过实现 接口的方式

    2. 方式3与前面两种方式不太一样,具体不同之处逐个进行分析。

    3. 首先,实现 接口并不能实例化DispatcherServlet对象。

    4. 其次, 仅仅是为了让用户可以修改DispatcherServlet在处理请求时使用的各种对象,例如拦截器( )、视图解析器( )等等

    5. 最后,使用Spring MVC时,通常会在配置文件上添加 注解。该注解会通过 引入另一个配置文件 , 中定义了 方法:

    [1] [2]

    02-结合源码分析DispatcherServlet处理请求的具体流程

    02.1-DispatcherServlet初始化过程

    当Servlet容器启动时,会通过SPI机制回调到 方法。在该方法中会遍历调用类路径下所有实现了 接口的类的 方法,最终程序流会进入我们自己的初始化类中。

    以01.2节中介绍的第2中方式为例(即通过继承 来初始化DispatcherServlet) ,程序流会进入到我们的实现类中 。

    02.2-一个请求的处理流程

    DispatcherServlet是Servlet接口的一个实现,其接口及类实现关系如下图所示:

    Spring Boot「20」从 DispatchServlet 开始一个请求的处理过程

    当请求离开浏览器进入到tomcat以后,最终会被Servlet容器传递给DispatcherServlet继承来的方法 中。在 方法中,根据请求中的HTTP方法,会交由特定的方法去处理:

    后续代码以 为例,请求被路由到继承来的 方法中,然后到达 方法中,在设置过一系列属性后(例如),请求最终到达 方法中。

    至此,请求的处理过程基本完毕。当然,我们依然忽略了许多的处理细节,这些将在后面的文章中详细分析。

  • 0
  • 0
  • 0
  • 27
  • 请登录之后再进行评论

    登录
  • 任务
  • 实时动态
  • 发布
  • 单栏布局 侧栏位置: