1:拦截器注册配置,spring-mvc.xml
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="${adminPath}/**" /> <mvc:exclude-mapping path="${adminPath}/"/> <mvc:exclude-mapping path="${adminPath}/login"/> <bean class="com.thinkgem.jeesite.modules.sys.interceptor.LogInterceptor" /> </mvc:interceptor> </mvc:interceptors>
2:Java代码,LogInterceptor.java
import java.text.SimpleDateFormat; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.core.NamedThreadLocal; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.thinkgem.jeesite.common.service.BaseService; import com.thinkgem.jeesite.common.utils.DateUtils; import com.thinkgem.jeesite.modules.sys.utils.LogUtils; /** * 日志拦截器 * @author ThinkGem * @version 2014-8-19 */ public class LogInterceptor extends BaseService implements HandlerInterceptor { private static final ThreadLocal<Long> startTimeThreadLocal = new NamedThreadLocal<Long>("ThreadLocal StartTime"); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (logger.isDebugEnabled()){ long beginTime = System.currentTimeMillis();//1、开始时间 startTimeThreadLocal.set(beginTime); //线程绑定变量(该数据只有当前请求的线程可见) logger.debug("开始计时: {} URI: {}", new SimpleDateFormat("hh:mm:ss.SSS") .format(beginTime), request.getRequestURI()); } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { if (modelAndView != null){ logger.info("ViewName: " + modelAndView.getViewName()); } } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 保存日志 LogUtils.saveLog(request, handler, ex, null); // 打印JVM信息。 if (logger.isDebugEnabled()){ long beginTime = startTimeThreadLocal.get();//得到线程绑定的局部变量(开始时间) long endTime = System.currentTimeMillis(); //2、结束时间 logger.debug("计时结束:{} 耗时:{} URI: {} 最大内存: {}m 已分配内存: {}m 已分配内存中的剩余空间: {}m 最大可用内存: {}m", new SimpleDateFormat("hh:mm:ss.SSS").format(endTime), DateUtils.formatDateTime(endTime - beginTime), request.getRequestURI(), Runtime.getRuntime().maxMemory()/1024/1024, Runtime.getRuntime().totalMemory()/1024/1024, Runtime.getRuntime().freeMemory()/1024/1024, (Runtime.getRuntime().maxMemory()-Runtime.getRuntime().totalMemory()+Runtime.getRuntime().freeMemory())/1024/1024); } } }
相关推荐
SpringMVC拦截器例子详解,
springmvc 拦截器
本篇文章主要介绍了防止SpringMVC拦截器拦截js等静态资源文件的解决方法,具有一定的参考价值,有兴趣的同学可以了解一下
SpringMvc 拦截器 原理清楚,代码简单,值得学习!
SpringMVC拦截器源代码
SpringMVC拦截器的使用,通俗易懂!
企业级开发-SpringMVC使用拦截器实现用户登录权限验证实验报告
可下载部署直接运行
springmvc拦截器实现登录验证
SpringMVC框架下对限定时间拦截(适用于初学者)
SpringMVC中的拦截器-拦截器方法的作用和执行顺序.avi
Springmvc框架进行登录验证,除了某些特定的action请求不需要登录验证,例如登录,注册等。其他的action请求均需要登录验证,若没有登录则直接调到登录界面。若登录成功,则通过拦截
自定义拦截器的具体实现、自定义拦截器的配置方式、多个拦截器之间的执行执行顺序
11SpringMVC拦截器.md
SpringMVC框架下使用Interceptor进行登录验证 链接:http://blog.csdn.net/lazyrabbitlll/article/details/78696168
简单的SpringMVC小程序,用Intelli IDEA 编写的,实现拦截器功能,实现了简单的登录、退出功能,是入门的好程序
初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器:Spring MVC拦截器发生在客户端 和 服务端之间,在客户端向服务端发送请求时进行拦截处理。...
springMVC 拦截器源代码 内有详细文档介绍操作 @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { //可以通过...
springmvc配置以及拦截器配置。。
主要介绍了SpringMVC拦截器实现登录认证的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下