在我们的 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>
的顺序执行。定义,然后 request
和response
被传递给 Servlet。从 Spring MVC 的角度来看,您正在寻找的是 HandlerInceptor .
关于java - DispatchServlet 是否会在过滤器之前拦截 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010939/