使用HandlerInterceptor拦截器,可以拦截请求,实现通用的日志管理操作
<强>,一,添加拦截器类强>
在“src/main/java”代码文件夹的“org.xs.demo1”的包下新建“LogInterceptor.java”类:
包org.xs.demo1; 进口java.text.SimpleDateFormat; 进口javax.servlet.http.HttpServletRequest; 进口javax.servlet.http.HttpServletResponse; 进口org.slf4j.Logger; 进口org.slf4j.LoggerFactory; 进口org.springframework.core.NamedThreadLocal; 进口org.springframework.web.servlet.HandlerInterceptor; 进口org.springframework.web.servlet.ModelAndView;/* * *日志拦截器 * @author ThinkGem */公共类LogInterceptor实现HandlerInterceptor { 私人最后日志记录器=LoggerFactory.getLogger (getClass () . getname ()); 私有静态最终ThreadLocalstartTimeThreadLocal=new NamedThreadLocal (“ThreadLocal开始时间”);/* * *预处理 */@Override 公共布尔preHandle (HttpServletRequest请求,HttpServletResponse响应对象处理程序){抛出异常 长beginTime=System.currentTimeMillis ();//开始时间 startTimeThreadLocal.set (beginTime);//线程绑定变量(该数据只有当前请求的线程可见) log.info(“开始计时:{}”,新SimpleDateFormat (hh: mm: ss.SSS) .format (beginTime)); 返回true; }/* * *返回处理 */@Override 公共空白postHandle (HttpServletRequest请求,HttpServletResponse响应对象处理程序,ModelAndView ModelAndView){抛出异常 如果(modelAndView !=null) { log.info (“ViewName:”+ modelAndView.getViewName ()); } }/* * *后处理 */@Override 公共空间afterCompletion (HttpServletRequest请求,HttpServletResponse响应、对象处理程序异常交货){抛出异常//保存日志//LogUtils。saveLog(请求、处理程序前,null);//输出日志信息 log.info(“访问地址:“+ request.getRequestURI() +”,执行方式:“+ request.getMethod ()); 长beginTime=startTimeThreadLocal.get ();//得到线程绑定的局部变量(开始时间) 长endTime=System.currentTimeMillis ();//结束时间 log.info(“计时结束:{}”,新SimpleDateFormat (hh: mm: ss.SSS) .format (endTime)); } }
<强>二、修改配置文件强>
修改spring-mvc.xml件,加入:
& lt; !——拦截器配置——比; & lt; mvc: interceptors> & lt; mvc: interceptor> & lt; mvc:=映射路径“/* *”/比; & lt; bean类=" org.xs.demo1.LogInterceptor "/比; & lt;/mvc: interceptor> & lt;/mvc: interceptors> >之前<强>三、运行测试强>
访问“http://localhost: 8080/demo1/hello/用于”地址
可以看到拦截器中输出的日志信息了
实例代码地址:spring-HandlerInterceptor_jb51。rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
使用弹簧拦截器实现日志管理实例