过滤器(filter),其主要目的是为了对request或者response进行处理。

过滤器可以用于登录、加密、解密、会话检查等等。

过滤器可以配置为拦截一个或多个资源。

过滤器可以拦截某一个或某一类操作,然后读取其中的request或者response并能进行修改

每一个过滤器都必须实现javax.servlet.Filter接口,该接口定义了过滤器的三个生命周期方法:init、doFilter、destroy。
在doFilter方法中,可以传入另一个Filter对象,这样多个过滤器互相调用,就可以形成一个过滤器链。那么最后一个需要再调用其它的过滤器的过滤器的doFilter方法该怎么办呢?具体做法是把FilterChain的对象传入doFilter方法,并且在该方法中执行FilterChain.doFilter()方法用于终止过滤器链。

配置过滤器的两种方式:

通过注解的方式来配置:

@WebFilter(filterName="TestFilter", urlPatterns=("/*"))

通过配置文件的方式来配置:

<filter>
    <filter-name>TestFilter</filter-name>
    <filter-class>Filter文件的完整路径</filter-class>
</filter>
<filter-mapping>
    <filter-name>TestFilter</filter-name>
    <urlpattern>/*</url-pattern>
</filter-mapping>

这样一来,就可通过在filter中更改请求和响应的内容从而实现过滤功能。