`
xiaoZ5919
  • 浏览: 404837 次
  • 性别: Icon_minigender_1
  • 来自: 安平人@北京
博客专栏
Group-logo
Netty学习笔记
浏览量:73198
社区版块
存档分类
最新评论

利用springMVC的interceptor实现页面性能监控(Filter亦可)

阅读更多

   调优第一步,找出耗时比较长的页面进行优化。利用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();

 

1
1
分享到:
评论

相关推荐

    浅谈SpringMVC中Interceptor和Filter区别

    SpringMVC中Interceptor和Filter是两个重要的概念,它们都是用来处理用户请求的,但它们有着不同的作用和实现机制。本文将详细介绍Interceptor和Filter的区别,帮助读者更好地理解这两个概念。 Interceptor的作用:...

    SpringMVC中使用Interceptor拦截器

    3. **性能监控**:记录每个请求的处理时间,帮助优化系统性能。 4. **全局异常处理**:捕获并处理控制器中未处理的异常,提供统一的错误响应。 5. **统一的请求/响应格式**:在服务端处理请求前,对请求数据进行...

    spring+springMvc简单实现SSO单点登录

    利用springMvc 实现的简单的单点登录Demo,内含三个小Mavn项目分别是 1、认证中心SSOServer 2、子系统1SSOClient1 3、子系统2SSOClient2 文章请参考 http://blog.csdn.net/qq_31183297/article/details/79419222

    Spring MVC Interceptor 实现性能监控的功能代码

    在本场景中,我们使用Interceptor来实现性能监控功能,以追踪每个URL的执行时间。 `PerformanceInterceptor` 类实现了 `HandlerInterceptor` 接口,该接口定义了三个方法:`preHandle`、`postHandle` 和 `...

    人工智能-项目实践-搜索引擎-使用solr搜索引擎 利用Spring springmvc 框架 在页面实现一些组合查询

    使用solr搜索引擎 利用Spring springmvc 框架 在页面实现一些组合查询

    SpringMVC 拦截器 实现 登录退出功能

    **SpringMVC 拦截器实现登录退出功能** 在SpringMVC框架中,拦截器(Interceptor)是一种非常...在实际应用中,拦截器常用于权限控制、性能监控、日志记录等多种场景,是构建高效、安全的Web应用不可或缺的一部分。

    SpringMVC实现用户角色管理

    在本项目中,我们将探讨如何利用SpringMVC来实现用户角色的管理。这个过程通常包括用户注册、登录验证、角色分配以及权限控制等多个环节。 首先,我们需要创建一个数据模型,用于存储用户和角色的信息。用户模型...

    springmvc-login-interceptor

    总之,Spring MVC的拦截器是实现Web应用程序中非核心业务逻辑的一种有效手段,如权限控制、性能监控等。在"springmvc-login-interceptor"项目中,你将学习到如何利用拦截器来实现登录验证,提升系统的安全性和用户...

    SpringMVC是实现登陆

    本篇文章将深入探讨如何使用SpringMVC来实现一个简单的登录功能,以及在此过程中涉及的关键知识点。 首先,我们要了解SpringMVC的基本架构。它遵循Model-View-Controller(MVC)设计模式,将业务逻辑、数据展示和...

    fengchao111-springmvc-interceptor-master.zip

    【标题】"fengchao111-springmvc-interceptor-master" 是一个关于Spring MVC拦截器(Interceptor)的开源项目。Spring MVC是Spring框架的一部分,专门用于构建Web应用程序,而拦截器则是在请求被控制器处理之前或...

    spring+springmvc+Interceptor+jwt+redis实现sso单点登录.zip

    本项目利用Spring、SpringMVC、Interceptor拦截器、JWT(JSON Web Token)以及Redis来实现SSO系统。下面将详细解释这些关键组件及其在SSO中的作用。 1. **Spring框架**: Spring是Java企业级应用开发的基石,提供...

    springmvc实现的简单用户管理系统

    本项目是使用SpringMVC实现的一个简单的用户管理系统,非常适合初学者学习和理解SpringMVC的工作原理。 1. **SpringMVC基本架构** SpringMVC的核心组件包括DispatcherServlet(前端控制器)、HandlerMapping...

    springMVC+mybatis实现登录和增删改查

    在本项目中,"springMVC+mybatis实现登录和增删改查"是一个典型的Web应用程序,它结合了SpringMVC、MyBatis两大主流框架,以及Bootstrap前端库,来构建一个用户友好的数据管理平台。以下是这个项目涉及到的主要知识...

    SpringMVC实现用户角色管理(springmvc角色权限管理)

    SpringMVC实现用户角色管理(springmvc角色权限管理) SpringMVC用户管理实现 通过SpringMVC与JSP实现用户角色管理 SpringMVC实现用户角色管理(springmvc角色权限管理

    springMVC+Ehcache的各级缓存(包括页面缓存)

    - 利用Filter或Interceptor,拦截请求并检查是否有缓存的页面,如果存在则直接返回,否则处理请求并存入缓存。 6. 缓存策略: - 时间驱动:设置缓存过期时间,超过这个时间自动清除。 - 命中率驱动:根据缓存...

    springmvc框架的用户登录注册的简单实现

    8. **视图解析器**:如 InternalResourceViewResolver,它根据逻辑视图名解析为实际的视图资源,如 JSP 页面。 9. **视图技术**:在示例中可能使用 JSP 作为视图技术,通过 Model 中的数据渲染用户界面。 10. **...

    Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码.zip

    Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...

    netty整合SpringMVC实现下载

    通过以上步骤,我们可以利用 Netty 的高性能特性处理网络通信,结合 SpringMVC 的 MVC 模式来处理业务逻辑,实现高效的文件下载服务。这种整合方式尤其适用于大文件下载或高并发场景,能充分利用硬件资源,提升用户...

    SpringMVC的Socket实现+Java Tomcat websocket实现+Java Socket通信实现 +Java UDP通信实现

    SpringMVC的Socket实现+Java Tomcat websocket实现+Java Socket通信实现 +Java UDP通信实现。websocket_study.rar 为springMVC版本的socket实现 websocket02.rar 里面包含tomcat的websocket实现+java socket双向通信...

Global site tag (gtag.js) - Google Analytics