调优第一步,找出耗时比较长的页面进行优化。利用interceptor能轻易搞定。interceptor提供了preHandle和postHandle以及afterCompletion三个方法。preHandle调用controller具体方法之前调用,postHandle完成具体方法之后调用,afterCompletion完成对页面的render以后调用,至此整个页面渲染完成。也就是说我们在preHandle记录开始的时间,在afterCompletion记录结束的时间,就可或者整个页面生成的时间。Spring自带StopWatch工具类来实现时间跟踪,关键一点interceptor不是线程安全的。我们需要借助threadlocal来实现线程安全。
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
if(usePerformance){
StopWatch stopWatch = new StopWatch(handler.toString());
stopWatchLocal.set(stopWatch);
stopWatch.start(handler.toString());
}
return true;
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
if(usePerformance){
StopWatch stopWatch = stopWatchLocal.get();
stopWatch.stop();
String currentPath = request.getRequestURI();
String queryString = request.getQueryString();
queryString = queryString == null ? "":"?" + queryString;
log.info("access url path:" + currentPath + queryString + " |time:" + stopWatch.getTotalTimeMillis());
stopWatchLocal.set(null);
}
}
呵呵,如果你没有使用springMVC可以使用filter来完成
stopWatch.start();
doFilterChain();
stopWatch.stop();
分享到:
相关推荐
主要介绍了浅谈SpringMVC中Interceptor和Filter区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
利用springMvc 实现的简单的单点登录Demo,内含三个小Mavn项目分别是 1、认证中心SSOServer 2、子系统1SSOClient1 3、子系统2SSOClient2 文章请参考 http://blog.csdn.net/qq_31183297/article/details/79419222
本篇文章主要介绍了Spring MVC Interceptor 实现性能监控的功能代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
个人整理的很好的springmvc注解实现用户注册功能。方便扩展其他功能。
使用solr搜索引擎 利用Spring springmvc 框架 在页面实现一些组合查询
NULL 博文链接:https://panyongzheng.iteye.com/blog/2084629
spring+springmvc+Interceptor+jwt+redis实现sso单点登录.zip
SpringMVC用户管理实现 通过SpringMVC与JSP实现用户角色管理
Java+tomcat+springMVC;实现用户注册及登陆 .没有Service与dao
开发步骤①导入SpringMVC相关坐标②配置SpringMVC核心控制器DispathcerServlet③创建Controller类和视图页面④使用注解配置Controller类中业务方法的映射地址⑤配置SpringMVC核心文件 spring-mvc.xml⑥客户端发起...
fengchao111-springmvc-interceptor-master.zip
SpringMVC实现用户角色管理(springmvc角色权限管理) SpringMVC用户管理实现 通过SpringMVC与JSP实现用户角色管理 SpringMVC实现用户角色管理(springmvc角色权限管理
基于springmvc实现分页查询基于springmvc实现分页查询
Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...
springMVC往jsp页面传数据,具体例子
SpringMVC实现简单的登陆,登陆后要看的是控制台,只要能做到接收参数和传送参数就可以了。
基于bootstrap、springmvc、mybatis开发的实现登录和增删改查基本功能的项目,界面友好
SpringMVC的Socket实现+Java Tomcat websocket实现+Java Socket通信实现 +Java UDP通信实现。websocket_study.rar 为springMVC版本的socket实现 websocket02.rar 里面包含tomcat的websocket实现+java socket双向通信...
根据互联网大佬传授的思想源码完成的简单的SpringMVC简单底层源码,每一行加上注释,方便大家一起学习思考