Spring调度servlet
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的定义。