代码分析

 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 复制代码
原文地址:https://www.cnblogs.com/zy12/p/8649699.html