过滤链: webapps 由一个或多个过滤器组成. (filterChain.doFilter(......)调用下一个过滤器.)
过滤器(Filter): 是对某一资源(servlet 或静态网页内容)的请求或来自某一资源的响应, 或同时对这两者进行执行过滤。链中的所有过滤器都是在遍历完链后,在链末尾才真正执行过滤任务.
一.WEB.XML配置(可有多个<filter>):
<filter>
<filter-name>FilterName</filter-name>
<filter-class>package.class.FilterClass</filter-class>
</filter>
<filter-mapping>
<filter-name>FilterName</filter-name>
<url-pattern>/*</url-pattern> //设置过滤的资源
<dispatcher>REQUEST</dispatcher> //设置请求或响应
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
二.类的创建:
Filter接口: 每个 Filter 类都有对 FilterConfig 对象的访问权,可从该对象获得其初始化参数和 ServletContext 的引用.
doFilter(.....): 执行过滤任务。参数
FilterChain实例.doFilter(ServletRequest request, ServletResponse response) 将请求和响应传递到链中的下一个实体。
destroy(): 由 Web 容器调用,指示将从服务中取出的过滤器。在调用此方法之后,Web 容器不会再对此过滤器实例调用 doFilter 方法。
init(FilterConfig filterConfig): 由 Web 容器调用,指示将过滤器放入服务中。servlet 容器只在实例化过滤器之后调用一次 init 方法。
FilterChain实例.doFilter(ServletRequest request, ServletResponse response): 调用链中的下一个过滤器。
request 沿着链传递的请求。
response 沿着链传递的响应。
********************************************************
package package.class;
import javax.servlet.Filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class FilterName implements Filter{
filterConfig fc=null;
public void
init(FilterConfig filterConfig) throws ServletException {
this.filterConfig=filterConfig;
}
public void
doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException {
//处理过滤任务
......
chain.doFilter(request,respos);
}
public void
destroy(){
}
}
posted on 2008-03-31 11:59
紫蝶∏飛揚↗ 阅读(842)
评论(0) 编辑 收藏 所属分类:
随想