Filter可以认为是Servlet的一种加强版,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。Filter也可以对用户请求生产响应,这一点与Servlet相同,但实际上很少使用Filter向用户生成响应。使用Filter完整的流程是:Filter对用户的请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。

Filter有以下几个好处:

1.在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest

2.根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据

3.在HttpServletResponse到达客户端之前,拦截HttpServletResponse

4.根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据

Filter有如下几个种类:

1.用户授权的Filter:Filter负责检查用户请求,根据请求过滤用户非法请求

2.日志Filter:详细记录某些特殊的用户请求

3.负责解码的Filter:包括对非标准编码的请求解码

4.能改变XML内容的XSLTFilter等

5.Filter可负责拦截多个请求响应;一个请求响应也可以被多个Filter拦截

创建Filter只需两个步骤:

1。创建一个Filter类

2.在web.xml中配置Filter


创建Filter类


创建Filter必须实现javax.servlet.Filter接口,在接口中定义了如下三个方法

void inti(FilterConfig config):用于完成Filter的初始化

void destroy();用于Filter销毁前,某些资源的回收

void doFilter(ServletRequest request,ServletResponse rsponse,FilterChain chain):

实现过滤功能,该方法就是对每个请求及响应增加的额外处理