Spring调度servlet

时间:2020-02-23 14:34:08  来源:igfitidea点击:

dispatcherservlet是springwebmvc中最重要的组件。

为什么dispatcherservlet是最重要的组件?因为它充当一个粘合剂,意味着它接收一个传入的URL并找到正确的方法和视图。它通过 HTTP请求接收URL。我们也可以将其视为一个中间件,因为它与两个端(HTTP请求的发送方和Spring应用程序)通信。DispatcherServlet完全 集成在IoC容器中,允许我们使用Spring的所有特性。

Dispatcher servlet工作流

以上介绍是一个顶层概述。现在,让我们更具体地看看它是如何在幕后发生的。

服务器请求到达服务器,并由分派器servlet 接收

Dispatcher servlet被授予一个 处理程序对象,在大多数情况下,它将是来自基于URL映射的 HandlerMapping对象的HandlerExecutionChain的实例。

有两种定义URL映射的方法:

web.xml文件文件

控制器方法注释

已从handler对象检索到一个或者多个 HandlerInterceptor对象的实例。

HandlerAdapter的实例从处理程序对象中检索。

由于这个实例,我们可以调用handle方法,该方法将执行controller类的任何逻辑。

HandlerInterceptor实例上的后处理逻辑已经执行。这是调用rendering方法之前的最后一步。

返回响应的适当视图组件由一个 ViewResolver实例完成。

终于在该视图的实例上调用了render方法。

DispatcherServlet继承自 HttpServlet并在web.xml文件web应用程序的文件。同样,如果我们从上面阅读第2步,我们将看到我们需要URL映射。首先,URL映射将请求映射到要处理的分派器处理程序。现在,使用URL映射的一种方法是将其存储在相同的web.xml文件文件。

<web-app>

  <servlet>
      <servlet-name>example</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
      <servlet-name>example</servlet-name>
      <url-pattern>*.form</url-pattern>
  </servlet-mapping>

</web-app>

这个代码片段示例取自Spring文档。

示例片段显示,所有以.form结尾的请求都将由示例DispatcherServlet处理。

当DispatcherServlet初始化后,框架将查找名为[servlet name]的文件-servlet.xml在应用程序的 web inf目录中创建bean,并覆盖在全局范围内以相同名称定义的所有bean的定义。