2

在我们的 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 会接受请求并将其提供给过滤器吗?

非常感谢您的帮助。

4

1 回答 1

3

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

于 2013-06-09T15:11:09.117 回答