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有如下4个种类:
(1)用户授权的Filter:负责检查用户请求,根据请求过滤用于非法请求。
(2)日志Filter:详细记录某些特殊用户的请求。
(3)负责解码的Filter:包括对非标准的请求解码。
(4)能改变XML内容的XSLT Filter等。
(5)Filter可负责拦截多个请求或响应;一个请求后响应也可被多个Filter拦截。
创建一个Filter只需两个步骤
(1)创建Filter处理类
(2)web.xml文件中配置Filter。