Filter可认为是Servlet的一种加强版,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是一个典型的处理链。
Filtert有如下几个用处:
①在HttpServletRequest到达servlet之前,拦截客户的HttpServletRequest。
②根据需要检查HttpServletRequest,也可修改HttpServletRequest的头和数据。
③在HttpServletResponse到达客户端之前,拦截HttpServletResponse
④根据需要检查HttpServletResponse,也可修改HttpServletResponse的头和数据。
Filter有如下几个种类:
①用户授权的Filter:Filter负责检查用户的请求,根据请求过滤用户非法请求。
②日志Filter:详细记录某些特殊的用户请求。
③负责解码的Filter:包括对非标准编码的请求解码。
④能改变XML内容的XSLT Filter 等
⑤Filter可负责拦截多个请求或响应;一个请求或响应也可被多个Filter拦截。
创建Filter只需两个步骤:
①创建Filter处理类
②web.xml 文件配置Filter。
补充
创建Filter必须实现javax.servlet.filter 接口。该接口定义了三个方法:
void init(FilterConfig config)用于完成Filter的初始化
void destroy()用于Filter的销毁,完成某些资源的回收。
void doFilter(ServletRequest request , ServletResponse response , FilterChain chain)实现过滤功能,该方法就是对每个请求及响应增加的额外处理。
doFilter()方法,实现该方法就可实现对用户请求进行预处理,也可实现对服务器响应进行后的处理——它们的分割线为是否调用了chain.doFilter(),执行该方法之前,即对用户请求进行处理;执行该方法之后,即对服务器响应进行后处理。
filter作用
![这里写图片描述](https://img-blog.csdn.net/20170420171036884?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjcwMDgxNzk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)