0%

过滤器

过滤器Filter

依赖于servlet容器,基于函数回调,可以对请求和响应进行拦截,在访问后端资源之前,拦截这些来自客户端的请求,在发送回客户端之前,处理这些响应

过滤器的类型

  • 身份验证过滤器
  • 数据压缩过滤器
  • 加密过滤器
  • 触发访问事件资源的过滤器
  • 图像转换过滤器
  • 日志记录和审核过滤器
  • MIME-类型链过滤器
  • Tokenizing过滤器
  • 转换XML内容的XSL/T过滤器

过滤器的使用

需要实现Filter接口

1
2
3
4
5
6
7
8
public interface Filter {
// 由servlet容器调用,指示一个过滤器被放入服务
void init(FilterConfig var1) throws ServletException;
// 在每次一个请求或响应在所对应的资源下时通过链传递,由容器调用
void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException;
// 由servlet容器调用,指示一个过滤器从服务去除
void destroy();
}

​ 在web.xml中配置写好的Filter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<filter>
<filter-name>security</filter-name>
<filter-class>com.zhanghe.study.webstudy.filter.SecurityFilter</filter-class>
<!--用户名-->
<init-param>
<param-name>userName</param-name>
<param-value>john</param-value>
</init-param>
</filter>

<!-- 拦截的顺序与在web.xml中 filter-mapping的配置顺序有关,靠前的先被调用 -->
<filter-mapping>
<filter-name>security</filter-name>
<url-pattern>/*</url-pattern>
<!-- 在filter-mapping中有一个dispatcher标签,指定过滤器所拦截的资源被Servlet容器的调用方式
可以是REQUEST,INCLUDE,FORWARD和ERROR,默认是REQUEST
可以指定多个dispatcher来指定Filter对资源的多种调用方式进行拦截 -->
<dispatcher>REQUEST</dispatcher>
</filter-mapping>