使用spring拦截器实现日志管理实例
程序员文章站
2024-03-05 17:32:25
使用handlerinterceptor拦截器,可以拦截请求,实现通用的日志管理操作
一、添加拦截器类
在"src/main/java"代码文件夹的"org...
使用handlerinterceptor拦截器,可以拦截请求,实现通用的日志管理操作
一、添加拦截器类
在"src/main/java"代码文件夹的"org.xs.demo1"的包下新建"loginterceptor.java"类:
package org.xs.demo1; import java.text.simpledateformat; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.core.namedthreadlocal; import org.springframework.web.servlet.handlerinterceptor; import org.springframework.web.servlet.modelandview; /** * 日志拦截器 * @author thinkgem */ public class loginterceptor implements handlerinterceptor { private final logger log = loggerfactory.getlogger(getclass().getname()); private static final threadlocal<long> starttimethreadlocal = new namedthreadlocal<long>("threadlocal starttime"); /** * 预处理 */ @override public boolean prehandle(httpservletrequest request, httpservletresponse response, object handler) throws exception { long begintime = system.currenttimemillis(); //开始时间 starttimethreadlocal.set(begintime); //线程绑定变量(该数据只有当前请求的线程可见) log.info("开始计时: {}", new simpledateformat("hh:mm:ss.sss").format(begintime)); return true; } /** * 返回处理 */ @override public void posthandle(httpservletrequest request, httpservletresponse response, object handler, modelandview modelandview) throws exception { if (modelandview != null){ log.info("viewname: " + modelandview.getviewname()); } } /** * 后处理 */ @override public void aftercompletion(httpservletrequest request, httpservletresponse response, object handler, exception ex) throws exception { // 保存日志 //logutils.savelog(request, handler, ex, null); // 输出日志信息 log.info("访问地址:" + request.getrequesturi() + ",执行方式:" + request.getmethod()); long begintime = starttimethreadlocal.get(); //得到线程绑定的局部变量(开始时间) long endtime = system.currenttimemillis(); //结束时间 log.info("计时结束:{}", new simpledateformat("hh:mm:ss.sss").format(endtime)); } }
二、修改配置文件
修改spring-mvc.xml件,加入:
<!-- 拦截器配置 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**" /> <bean class="org.xs.demo1.loginterceptor" /> </mvc:interceptor> </mvc:interceptors>
三、运行测试
访问"http://localhost:8080/demo1/hello/list2"地址
可以看到拦截器中输出的日志信息了
实例代码地址:spring-handlerinterceptor_jb51.rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: Java Map 按Key排序实例代码
下一篇: Java实现多线程文件下载的代码示例
推荐阅读