zoukankan      html  css  js  c++  java
  • 分析LogFilter

     

    复制代码
     1 package lee;
     2 
     3 import javax.servlet.*;
     4 import javax.servlet.http.*;
     5 import javax.servlet.annotation.*;
     6 
     7 import java.io.*;
     8 
     9 /**
    10  * Description:
    11  * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
    12  * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
    13  * <br/>This program is protected by copyright laws.
    14  * <br/>Program Name:
    15  * <br/>Date:
    16  * @author  Yeeku.H.Lee kongyeeku@163.com
    17  * @version  1.0
    18  */
    19 
    20 @WebFilter(filterName="log"
    21     ,urlPatterns={"/*"})
    22 public class LogFilter implements Filter
    23 {
    24     // FilterConfig可用于访问Filter的配置信息
    25     private FilterConfig config;
    26     // 实现初始化方法
    27     public void init(FilterConfig config)
    28     {
    29         this.config = config;
    30     }
    31     // 实现销毁方法
    32     public void destroy()
    33     {
    34         this.config = null;
    35     }
    36     // 执行过滤的核心方法
    37     public void doFilter(ServletRequest request,
    38         ServletResponse response, FilterChain chain)
    39         throws IOException,ServletException
    40     {
    41         // ---------下面代码用于对用户请求执行预处理---------
    42         // 获取ServletContext对象,用于记录日志
    43         ServletContext context = this.config.getServletContext();
    44         long before = System.currentTimeMillis();
    45         System.out.println("开始过滤...");
    46         // 将请求转换成HttpServletRequest请求
    47         HttpServletRequest hrequest = (HttpServletRequest)request;
    48         // 输出提示信息
    49         System.out.println("Filter已经截获到用户的请求的地址: " +
    50             hrequest.getServletPath());
    51         // Filter只是链式处理,请求依然放行到目的地址
    52         chain.doFilter(request, response);
    53         // ---------下面代码用于对服务器响应执行后处理---------
    54         long after = System.currentTimeMillis();
    55         // 输出提示信息
    56         System.out.println("过滤结束");
    57         // 输出提示信息
    58         System.out.println("请求被定位到" + hrequest.getRequestURI() +
    59             "   所花的时间为: " + (after - before));
    60     }
    61 }
    复制代码

    long before = System.currentTimeMillis();

    long after = System.currentTimeMillis();

    这两句代码定义了doFilter()过滤用户请求的范围。

    HttpServletRequest hrequest = (HttpServletRequest) request;

    HttpServletRequest接口是ServletRequest子接口,HttpServletRequest接口遵循http协议。将请求转换成HttpServletRequest请求。

    System.out.println("Filter 已经截获到用户的请求的地址: "  + hrequest.getSeryletPath() );

    输出提示信息,输出截获到用户的请求的地址。

  • 相关阅读:
    函数配接器
    函数对象和函数指针
    unary_function 和 binary_function
    堆排序
    Shell排序
    volatile理解
    死锁
    进程间通信
    优化循环的方法-循环展开
    如何学习编译原理
  • 原文地址:https://www.cnblogs.com/WeVv/p/8650529.html
Copyright © 2011-2022 走看看