Filter、FilterChain

来源:互联网 发布:数据有效性indirect 编辑:程序博客网 时间:2024/05/18 01:44


 

servlet过滤器是小型的web组件,它能够处理传入的请求和传出的响应。Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开servlet时处理response。它具有高度的透明性,无需更改应用程序代码,就可以根据需要添加、修改或从应用程序中将它删除。

创建一个Filter 只需两个步骤: 
(1)创建Filter 处理类:

(2)在web.xml 文件中配置Filter 。 
创建Filter 必须实现javax.servlet.Filter 接口,在该接口中定义了三个方法:
1. init():在容器实例化过滤器时调用,该方法接受一个FilterConfig类型的对象做为输入。
2. destroy():执行一些清理操作。
3. doFilter():类似servlet的doPost()、doGet()方法,执行具体的过滤任务。

Java中的Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应。 主要用于对HttpServletRequest 进行预处理,也可以对HttpServletResponse 进行后处理,是个典型的处理链。

Filter 有如下几个用处:

l 在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest 。

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

l 在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。

l 根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据。

Filter 有如下几个种类:

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

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

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

l 能改变XML 内容的XSLTFilter 等。

一个Filter 可负责拦截多个请求或响应:一个请求或响应也可被多个Filter拦截

二:FilterChain

在doFilter中执行 filterchain.doFilter(servletrequest, servletresponse); 则会执行下一个filter,如果没有则执行相应servlet中的service方法。

0 0
原创粉丝点击