关于Filter代码的理解

首先,这段代码是一段日志Filter,这个Filter负责拦截所有的用户请求,并将请求的信息记录在日志中,核心代码如下: 

//声明了一个不带返回值的doFilter方法并带三个形参,FilterChain是过滤链的意思

public void doFilter(ServletRequest request   ServletResponse response   FilterChain chain)

//如果调用该方法时出错,则抛出异常,类型为IO或Servlet

throws IOExceptions ServletExceptions

{

  //通过调用getServeletContext方法获取ServletContext对象,用于记录日志

  ServletSontext contex t= this.config.getServeletContext();

  //调用currentTimeMillis函数来获得当前的时刻

  long before = System.currentTimeMillis();

  System.out.println("过滤开始...................");

  //将请求强制转化为HttpServletRequest请求,HttpServletRequest接口遵循http协议

  HttpServletRequest hrequest = (HttpServletRequest)Request;

  //通过对象hrequest调用getServletPath方法获得用户请求地址

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

  //链式处理请求和响应

  chain.doFilter(request,response);

  //调用currentTimeMillis函数来获得处理后的时刻

  long after = System.currentTimeMillis();

  System.out.println("过滤结束");

  //调用getRequestURL方法获得请求的URL

  System.out.println("请求被定位到" + hrequest.getRequestURL() + "所花的时间为:" + (after - long));

}

 

posted @ 2018-03-24 14:18  天鸟  阅读(188)  评论(0编辑  收藏  举报