1、实现javax.servlet.Filter接口
init() :过滤器初始化参数配置,服务器启动调用此方法,这个方法可以,读取web.xml配置的参数
doFilter():访问有代码调用此方法,过滤方法逻辑
destroy():关闭服务器调用此方法

web.xml:
<filter> //filter只能配置一个
<filter-name>Filter的名字</filter-name>
<filter-class>Filter类的名称</filter-class> //过滤器完整的名字,包括包名
<init-param>
<description>描述信息可以省略,放在此位置</description>
<param-name>参数名称</param-name>
<param-value>参数的值</param-value>
</init-param>
</filter>

<filter-mapping>//可以配置多个
<filter-name>Filter的名字</filter-name>//必须跟filter中的filter-name名字一致
<url-pattern>URL</url-pattern> //用户请求的URL与指定的URL匹配时将触发过滤器工作
默认REQUEST
</filter-mapping>



2 sevletFilter分类
2.1 REQUEST(servlet2.5,默认):用户直接访问页面时,Web容器将会,调用过滤器
2.2 FORWARD(servlet2.5):目标资源是通过RequstDispatcher的forward访问时候,调用该过滤器
request.getRequestDispatcher("main.jsp").forward(request,response)
<jsp:forward />
2.3 INCLUDE(servlet2.5):目标资源是通过RequstDispatcher的include访问时候,调用该过滤器
request.getRequestDispatcher("main.jsp").include(request,response)
<jsp:include />
2.4 ERROR(servlet2.5):目标资源是通过声明式异常处理机制调用时候,过滤器将被调用
比如出错了,错误资源看不懂,给个人性化提示,
web.xml:
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
在过滤器中可以捕获错误信息
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("检测到错误信息");
filterChain.doFilter(servletRequest,servletResponse);//这里不打开的话不会跳
转到/error.jsp
}

2.5 ASYNC(servlet3.0新加):支持异步处理,有的时候servlet处理数据时间比较久,想异步处理成功后给个回调即可,这个就是支持的。
3.0新增了@WebFilter,@WebFilter用于将一个类生命为过滤器,该注解将会在部署时被容器处理,
容器将根据具体的属性配置将相应的类部署为过滤器,这种方式就不需要在web.xml中配置了。

@WebFilter(servletNames = {"SimpleServlet"},filterName = "SimpleFilter",
value = {"/index.jsp"},dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.ASYNC)
public class LessThanSixFilter implements Filter{...}
等价于:
<filter>
<filter-name>SimpleFilter</filter-name>
<filter-class>xxx</filter-class>
</filter>
<filter-mapping>
<filter-name>SimpleFilter</filter-name>
<servlet-name>SimpleServlet</servlet-name>
</filter-mapping>

)