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):
实现过滤功能,该方法就是对每个请求及响应增加的额外处理
转载于:https://blog.51cto.com/longx/1312221