1 @WebFilter(filterName="log" 2 ,urlPatterns={"/*"}) 3 //创建一个LOgFilter类 4 public class LogFilter implements Filter 5 { 6 //FilterConfig可用于访问Filter的配置信息 7 private FilterConfig config; 8 //实现初始化方法 9 public void init(FilterConfig config) 10 { 11 this.config = config; 12 } 13 //实现销毁方法 14 public void destroy() 15 { 16 this.config = null; 17 } 18 //执行过滤的核心方法 19 public void doFilter(ServletRequest request, 20 ServletResponse response, FilterChain chain) 21 throws IOException,ServletException//创建一个doFilter 类,request参数是用于获取客户请求数据,response参数是用于发送响应数据,chain参数是过滤调用链。 22 { 23 //---------下面代码用于对用户请求执行预处理--------- 24 //获取ServletContext对象,用于记录日志 25 ServletContext context = this.config.getServletContext(); 26 long before = System.currentTimeMillis();//是获得当前时间距离1970-1-1 00:00:00经过的毫秒数 27 System.out.println("开始过滤..."); 28 //将请求转换成HttpServletRequest请求 29 HttpServletRequest hrequest = (HttpServletRequest)request;//把request强制类型转换为HttpServletRequest对象 30 //输出提示信息 31 System.out.println("Filter已经截获到用户的请求的地址: " + 32 hrequest.getServletPath());//hrequest.getServletPath()是返回的是项目名到当前jsp文件的路径(意思就是在这个项目首页到文件的路径) 33 //Filter只是链式处理,请求依然放行到目的地址 34 chain.doFilter(request, response);//调用下一个filter。 35 //---------下面代码用于对服务器响应执行后处理--------- 36 long after = System.currentTimeMillis();//是获得当前时间距离1970-1-1 00:00:00经过的毫秒数 37 //输出提示信息 38 System.out.println("过滤结束"); 39 //输出提示信息 40 System.out.println("请求被定位到" + hrequest.getRequestURI() + 41 " 所花的时间为: " + (after - before));//hrequest.getRequestURI()是返回的整个URL的路径请求(意思就是返回的浏览器地址栏的整个地址) 42 } 43 } 44 复制代码