SSH 自定义Filter 拦截器

来源:互联网 发布:qq轻聊版 for windows 编辑:程序博客网 时间:2024/06/05 16:28

<!-- 定义Filter -->
 <filter>
  <!-- Filter的名字 -->
  <filter-name>log</filter-name>
  <!-- Filter的实现类 -->
  <filter-class>filter.LogFilter</filter-class>
 </filter>
 <!-- 定义Filter拦截的URL地址 -->
 <filter-mapping>
  <!-- Filter的名字 -->
  <filter-name>log</filter-name>
  <!-- Filter负责拦截的URL -->
  <url-pattern>/*</url-pattern>
 </filter-mapping>


java
package filter;

import java.io.*;
import java.util.Date;

import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class LogFilter implements Filter
{
 //FilterConfig可用于访问Filter的配置信息
 private FilterConfig config;
 //实现初始化方法
 public void init(FilterConfig config)
 {
  this.config = config;
 }
 //实现销毁方法
 public void destroy()
 {
  this.config = null;
 }
 //执行过滤的核心方法
 public void doFilter(ServletRequest request,
  ServletResponse response, FilterChain chain)
  throws IOException,ServletException
 {
  //Log log = LogFactory.getLog(LogFilter.class);

  //---------下面代码用于对用户请求执行预处理---------
  //获取ServletContext对象,用于记录日志
  ServletContext context = this.config.getServletContext();
  long before = System.currentTimeMillis();
  System.out.println("开始过滤...");
  //将请求转换成HttpServletRequest请求
  HttpServletRequest hrequest = (HttpServletRequest)request;
  //输出提示信息
  //log.info("aaaaaaaaaa"+new Date()+":"+hrequest.getServletPath());
  System.out.println("Filter已经截获到用户的请求的地址: " +
   hrequest.getServletPath());
  //Filter只是链式处理,请求依然放行到目的地址  
  chain.doFilter(request, response);
  //---------下面代码用于对服务器响应执行后处理---------
  long after = System.currentTimeMillis();
  //输出提示信息
  System.out.println("过滤结束");
  //输出提示信息
  System.out.println("请求被定位到" + hrequest.getRequestURI() +
     所花的时间为: " + (after - before));
    }
}