【www.bbyears.com--班主任工作日志】
使用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
/**
* 预处理
*/
@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"地址
可以看到拦截器中输出的日志信息了