java - DispatchServlet 是否会在过滤器之前拦截 HTTP 请求?

标签 java spring servlets spring-mvc filter

在我们的 web.xml 中,我们有以下几行:

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
       <init-param>
          <param-name>contextAttribute</param-name>
          <param-value>org.springframework.web.servlet.FrameworkServlet.CONTEXT.spring</param-value>
       <init-param>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
<filter-mapping>
<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/<url-pattern>
<servlet-mapping>

spring-servlet.xml 文件定义了一个用于过滤器配置的元素。

我的问题是:当一个http请求发送到这个应用程序时,哪个实体(DispatcherServlet或过滤器)将首先看到该请求?过滤器会处理请求并将其移交给 DispatcherServlet 吗?或者 DispatcherServlet 会接受请求并将其提供给过滤器吗?

非常感谢您的帮助。

最佳答案

过滤器总是在 Servlet 之前调用。当您有过滤器和与 URL 模式匹配的 servlet 时,所有过滤器首先按照 <filter-mapping> 的顺序执行。定义,然后 requestresponse被传递给 Servlet。从 Spring MVC 的角度来看,您正在寻找的是 HandlerInceptor .

关于java - DispatchServlet 是否会在过滤器之前拦截 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010939/

相关文章:

java - 调整大小时无法保持尺寸的游戏片段居中

java - 为什么缺少注释不会在运行时导致 ClassNotFoundException?

spring - AsyncRestTemplate 的 MockRestServiceServer

java - 映射值应该声明为常量还是枚举?

ajax 调用 servlet 并重定向到 jsp

java - 实现 Spring ThreadPoolTask​​Executor 并提供最佳的配置值

java - 操作已完成,HTTP 状态代码为 409(失败)

java - 什么时候为 bean 调用 @Autowired?

javascript - 无法在jsp中使用javascript清除 session

java - HTTP 客户端-服务器请求响应