拦截器 ‹filter› ‹filter-mapping›

Exisi 2022-06-28 14:05:13
Categories: Tags:

 

 

 

Filter 过滤器

 

标签

说明

<filter>

过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联

子标签

说明

<filter-name>

定义过滤器的名称,该名称在整个应用中都必须是惟一的

<filter-class>

指定过滤器类的完全限定的名称

 

<filter-mapping>

一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servletJSP页面相关联

子标签

说明

<filter-name>

定义过滤器的名称,该名称在整个应用中都必须是惟一的

<servlet-name>

servlet名称

 

 

@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

    //请求传递前处理

    chain.doFilter(request, response);

    //请求处理后处理

}

 

 

 

示例

<filter>

  <filter-name>characterEncodingFilter</filter-name>

  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

  <init-param>

    <!-- 设置编码方式 -->

    <param-name>encoding</param-name>

    <param-value>UTF-8</param-value>

  </init-param>

  <init-param>

    <!-- 强制请求对象使用encoding的编码方式 -->

    <param-name>forceRequestEncoding</param-name>

    <param-value>true</param-value>

  </init-param>

  <init-param>

    <!-- 强制响应对象使用encoding的编码方式 -->

    <param-name>forceResponseEncoding</param-name>

    <param-value>true</param-value>

  </init-param>

</filter>

 

<!-- Servlet关联过滤器 -->

<filter-mapping>

  <filter-name>characterEncodingFilter</filter-name>

  <url-pattern>/*</url-pattern>

</filter-mapping>

 

代理自定义过滤器,过滤器是不能通过Spring依赖注入的,通过DelegatingFilterProxy进行代理,实际上就是通过ApplicationContext中获取filter对象

示例

<filter>

  <filter-name>xxx</filter-name>

  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

  <init-param>

    <param-name>targetBeanName</param-name>

    <param-value>simpleFilter</param-value>

  </init-param>

</filter>

<filter-mapping>

  <filter-name>xxx</filter-name>

  <url-pattern>/*</url-pattern>

</filter-mapping>

 

 

来自<https://www.jianshu.com/p/142741300518>