黑马程序员技术交流社区

标题: JavaWeb [打印本页]

作者: 付家辉    时间: 2015-3-14 12:53
标题: JavaWeb
JavaWeb应用中创建过滤器的步骤和代码:
作者: 付家辉    时间: 2015-3-15 13:53
步骤: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绕过过滤器设置。
  1. mport java.io.IOException;

  2. import javax.servlet.Filter;
  3. import javax.servlet.FilterChain;
  4. import javax.servlet.FilterConfig;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.ServletRequest;
  7. import javax.servlet.ServletResponse;

  8. import java.util.*;

  9. public class PageTimersFilter implements Filter {

  10.         FilterConfig filterConfig = null;
  11.        
  12.         public void init(FilterConfig filterConfig) throws ServletException {
  13.                 this.filterConfig = filterConfig;
  14.         }

  15.         public void doFilter(ServletRequest request, ServletResponse response,
  16.                         FilterChain chain) throws IOException, ServletException {
  17.                 Date startTime,endTime;
  18.                 double duration = 0;
  19.                 startTime = new Date();//记下开始时间
  20.                 chain.doFilter(request,response);//将处理权转交给下一处理器
  21.                 endTime = new Date();//记下结束时间
  22.                 duration = endTime.getTime()-startTime.getTime();//计算所耗费时间
  23.                 System.out.println("本次请求/响应耗时:"+duration+"毫秒!");
  24.         }

  25.         public void destroy() {
  26.                 this.filterConfig = null;
  27.         }

  28. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2