关于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));
}