步骤:1建立一个实现Filter接口的类并定义3个方法:doFilter,init和destroy
2:在doFilter方法中放入过滤器行为.doFilter方法的第一个参数为ServletRequest对象,此对象给过滤器提供了对进入的信息(包括表单数据,cookie和HTTP请求头)的完全访问:第二个参数为ServletResponse,通常在简单的过滤器中,最后一个参数为FilterChain,此参数用来调用Servlet或JSP页。
3:调用FilterChain对象的doFilter方法,Filter接口的doFilter方法取一个FilterChain对像作为他的一个参数,在调用此对象的doFilter方法是,激活下一个相关的过滤器,如果没有另一个过滤器与Servlet或JSP页面相关,则Servlet或JSP页面被激活。
4:对相应的Servlet和JSP页面注册过滤器,在部署描述符文件web.xml中使用filter和filtermapping元素。
5:禁用激活器Servlet,防止用户利用默Servlet URL绕过过滤器设置。
- mport 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;
- import java.util.*;
- public class PageTimersFilter implements Filter {
- FilterConfig filterConfig = null;
-
- public void init(FilterConfig filterConfig) throws ServletException {
- this.filterConfig = filterConfig;
- }
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- Date startTime,endTime;
- double duration = 0;
- startTime = new Date();//记下开始时间
- chain.doFilter(request,response);//将处理权转交给下一处理器
- endTime = new Date();//记下结束时间
- duration = endTime.getTime()-startTime.getTime();//计算所耗费时间
- System.out.println("本次请求/响应耗时:"+duration+"毫秒!");
- }
- public void destroy() {
- this.filterConfig = null;
- }
- }
复制代码 |