• 代码分析


     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 复制代码
  • 相关阅读:
    java监控Linux磁盘空间的使用情况
    报道篇
    标签详解
    selectors模块
    [Python 多线程] RLock可重入锁
    Mysql中索引的 创建,查看,删除,修改
    openpyxl模块的使用
    Oracle中row_number()、rank()、dense_rank() 的区别
    python面试题
    sql 用Group by分组后,取每组的前几条记录
  • 原文地址:https://www.cnblogs.com/zy12/p/8649699.html
Copyright © 2020-2023  润新知