一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

使用spring拦截器实现日志管理实例

时间:2017-06-08 编辑:简简单单 来源:一聚教程网

使用HandlerInterceptor拦截器,可以拦截请求,实现通用的日志管理操作

 一、添加拦截器类

在"src/main/java"代码文件夹的"org.xs.demo1"的包下新建"LogInterceptor.java"类:

 

 代码如下 复制代码

packageorg.xs.demo1;

 

importjava.text.SimpleDateFormat;

 

importjavax.servlet.http.HttpServletRequest;

 

importjavax.servlet.http.HttpServletResponse;

 

importorg.slf4j.Logger;

 

importorg.slf4j.LoggerFactory;

 

importorg.springframework.core.NamedThreadLocal;

 

importorg.springframework.web.servlet.HandlerInterceptor;

 

importorg.springframework.web.servlet.ModelAndView;

 

/**

 

 * 日志拦截器

 

 * @author ThinkGem

 

 */

 

publicclassLogInterceptorimplementsHandlerInterceptor {

  privatefinalLogger log = LoggerFactory.getLogger(getClass().getName());

 

  privatestaticfinalThreadLocal startTimeThreadLocal =newNamedThreadLocal("ThreadLocal StartTime");

  /**

 

   * 预处理

 

   */

 

  @Override

 

  publicbooleanpreHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throwsException {

 

      

 

    longbeginTime = System.currentTimeMillis();//开始时间

 

    startTimeThreadLocal.set(beginTime);//线程绑定变量(该数据只有当前请求的线程可见)

 

    log.info("开始计时: {}",newSimpleDateFormat("hh:mm:ss.SSS").format(beginTime));

 

      

 

    returntrue;

 

  }

 

  /**

 

   * 返回处理

 

   */

 

  @Override

 

  publicvoidpostHandle(HttpServletRequest  request, HttpServletResponse response, Object handler, ModelAndView  modelAndView)throwsException {

 

    if(modelAndView !=null){

 

      log.info("ViewName: "+ modelAndView.getViewName());

 

    }

 

  }

 

  /**

 

   * 后处理

 

   */

 

  @Override

 

  publicvoidafterCompletion(HttpServletRequest  request, HttpServletResponse response, Object handler, Exception  ex)throwsException {

 

    // 保存日志

 

    //LogUtils.saveLog(request, handler, ex, null);    

 

    // 输出日志信息

 

    log.info("访问地址:"+ request.getRequestURI() +",执行方式:"+ request.getMethod());

 

    longbeginTime = startTimeThreadLocal.get();//得到线程绑定的局部变量(开始时间)

 

    longendTime = System.currentTimeMillis();//结束时间

 

    log.info("计时结束:{}",newSimpleDateFormat("hh:mm:ss.SSS").format(endTime));

 

  }

}

 

二、修改配置文件

修改spring-mvc.xml件,加入:

 

 代码如下 复制代码

 

 

  

 

    

 

    

 

  

 

 

三、运行测试

访问"http://localhost:8080/demo1/hello/list2"地址

可以看到拦截器中输出的日志信息了

热门栏目