`
hejiajunsh
  • 浏览: 410905 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

使用Filter统计Javaweb程序http请求响应时间

阅读更多

在网站性能的相关工作中,一个重要的方面是有一定的监控和日志统计,然后对这些数据进行分析,知道什么时候慢了,慢在哪里,然后才可以进行有针对性的性能优化工作;

这里,80/20准则是非常适用的,我所见过的大部分情况都是约80%页面都是没问题的,但是有约20%的页面的性能较差;

监控http请求的处理时间的方法有很多,这里介绍一种javaweb程序中监控/统计http请求处理时间的简便方法:就是利用Filter来统计所有请求的处理时间;

Filter是j2ee的一种过滤器模式,可以在一个filterchain上挂很多个不同的filter,做各种的处理,比如安全、编码等;filter可以指定对应到哪些url,如果指定url-pattern为/*,那么就可以做对所有请求的统计

添加一个Filter名为PerfFilter, 在web.xml添加如下代码

<filter>
<display-name>PerfFilter</display-name>
<filter-name>PerfFilter</filter-name>
<filter-class>PerfFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PerfFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

 

然后在PerfFilter中有如下代码

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {
  HttpServletRequest req = (HttpServletRequest)request;
  long t1 = System.currentTimeMillis();
  chain.doFilter(request, response);
  long t2 = System.currentTimeMillis();
  System.out.println(“***request (” + req.getRequestURI() + “) finished   with time(ms): ” + (t2-t1) );
}

 

这时候,所有的http请求,无论是servlet,jsp还是其他各种框架的实现,比如struts,springmvc,jsf等,都可以被这个Filter统计到,可以方便后续的日志分析工作[实际中通常将System.out换成相关的logger],找到较慢的请求,然后重点该进。

例如,本地访问servlet和jsp,就会在控制台看到如下输出;

***request (/webtest/TestServlet) finished with time(ms): 5000

***request (/webtest/jsp1.jsp) finished with time(ms): 3000

有必要的话,还可以将请求相关的参数打印出来,因为实际工作中,不少请求的响应时间是和参数密切相关的;

这种做法的好处是有一个单独、统一的性能日志,系统以后添加任何servlet/jsp或者切换框架,都不需要任何改动;

分享到:
评论

相关推荐

    Javaweb程序设计教材源码.rar

    6. **Filter和Listener**:在JavaWeb中,Filter可以拦截请求和响应,进行预处理或后处理,如身份验证、日志记录。Listener则监听特定事件,如会话创建或销毁。源码中可能包含自定义的Filter和Listener实现。 7. **...

    javaweb应用程序设计(栗菊民编著)课本源代码

    5. **过滤器(Filter)与监听器(Listener)**:Filter可以对HTTP请求和响应进行预处理和后处理,实现如权限控制、字符编码转换等功能。Listener可以监听特定事件,如Session创建、销毁,以及ServletContext的变化等...

    JAVAWEB-19:JDBC之过滤器Filter

    在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它主要用于对HTTP请求和响应进行拦截、修改或处理。本教程将深入讲解JDBC与过滤器Filter的结合使用,帮助开发者更好地理解和应用这一技术。 首先,理解...

    JavaWeb程序设计入门课件HttpServlet共4页

    JavaWeb程序设计通常涉及以下组件:Servlet、JSP(JavaServer Pages)、Filter、Listener等。Servlet是Java Web应用的核心,用于处理客户端请求并返回响应。JSP则允许开发者使用HTML语法来嵌入Java代码,简化视图层...

    javaweb servlet(两种方式)和 filter的最简单实例

    Filter是JavaWeb中的一个中间件,它可以拦截请求和响应,执行一些预处理或后处理操作,如登录检查、数据过滤、字符编码转换等。创建Filter需要实现`javax.servlet.Filter`接口: ```java import javax.servlet.*; ...

    Javaweb程序开发入门的源代码Javaweb程序开发入门的源代码.rar

    11. **Web容器**: 如Tomcat、Jetty等,它们提供了运行JavaWeb应用的环境,负责Servlet的生命周期管理和请求响应。 12. **部署描述符(web.xml)**: 是JavaWeb应用的配置文件,用于配置Servlet、Filter、Listener...

    《JavaWeb程序开发进阶》-黑马程序员配套资源ppt.zip

    2. **第4章 Filter(过滤器)**:在JavaWeb应用中,Filter是用于拦截请求和响应的重要组件。它允许我们在请求到达目标Servlet或JSP之前以及响应返回客户端之后进行预处理和后处理,例如实现登录检查、URL编码解码、...

    javaweb小程序

    JavaWeb小程序是初学者入门Web开发的一个典型项目,它基于MVC(Model-View-Controller)架构模式,这种模式在Web应用中广泛使用,能够有效分离业务逻辑、数据处理和用户界面。MVC模式的核心思想是将应用程序的不同...

    JavaWeb开发技术-什么是Filter.pptx

    Filter,即过滤器,是一种能够拦截HTTP请求和响应的机制,允许开发者在请求到达Servlet之前或Servlet响应返回给客户端之后进行处理。这种处理可以包括数据验证、日志记录、安全控制、字符编码转换等多种任务。 ...

    javaWeb项目 filter练习

    在JavaWeb开发中,过滤器(Filter)是一个重要的概念,它允许我们在请求被发送到目标资源(如Servlet、JSP页面)之前或之后对请求进行处理。本项目"javaWeb项目 filter练习"主要关注了两个核心的应用场景:编码过滤...

    javaweb程序设计综合测评A卷.zip

    6. **过滤器与监听器**:在JavaWeb中,过滤器(Filter)可以对请求和响应进行预处理和后处理,例如字符编码转换、权限控制等。监听器(Listener)则监听Web组件的生命周期事件,如session创建、销毁等。 7. **会话...

    Javaweb第六章的代码

    9. **过滤器和监听器**:Filter和Listener是JavaWeb中的重要组件。过滤器可以在请求到达Servlet之前或响应离开Servlet之后对其进行处理,监听器则可以监听特定的Web事件,如session的创建和销毁。 10. **部署描述符...

    用户统计javaWeb

    综上所述,“用户统计JavaWeb”涉及到了多个方面的技术和方法,包括使用Filter和Listener来监控用户的登录状态、通过HttpSession存储用户信息、以及利用ServletContext来实现全局数据共享等。通过这些技术和方法的...

    JavaWeb程序设计作业答案.rar

    3. **HTTP协议理解**:请求方法GET和POST的区别,请求头和响应头的使用,以及会话管理的概念。 4. **JDBC数据库操作**:连接数据库,执行SQL语句,处理结果集,以及事务管理等基本操作。 5. **MVC模式**:模型-...

    javaweb第十章的练习代码

    4. Filter(过滤器):Filter接口允许我们在数据被发送到响应或者请求被发送到目标之前对HTTP请求和响应进行拦截处理。在chap10中,可能存在一个"LoggingFilter",用于记录每个请求的详细信息,或者"EncodingFilter...

    JavaWeb开发实战源码

    Servlet是Java为Web应用程序设计的一种小型Java应用程序,它扩展了Web服务器的功能,能够处理HTTP请求并生成响应。JSP则是用于创建动态网页的工具,将HTML和Java代码混合在一起,使得视图和逻辑分离。 在源码中,你...

    JavaWeb讲义:JavaWeb应用简介

    JavaWeb应用是使用Java语言开发的、运行在服务器端的应用程序,能够处理来自客户端(如浏览器)的请求,并返回相应的动态内容。这些应用通常由HTML、CSS、JavaScript以及Java Servlets、JSP(JavaServer Pages)等...

    JavaWeb上机练习10.zip

    6. **过滤器(Filter)与监听器(Listener)**:过滤器在请求到达目标资源之前进行预处理,响应之后进行后处理,可以实现如权限控制、编码转换等功能。监听器可以监听特定事件,如session的创建、销毁等,常用于实现...

    JavaWeb开发技术-Filter映射.pptx

    JavaWeb开发技术中的Filter映射是构建Web应用程序的关键部分,它允许开发者在HTTP请求处理的生命周期中添加自定义逻辑。Filter是一种特殊的Java类,能够拦截客户端到服务器端的请求和服务器响应,对数据进行预处理...

    使用JavaWeb写的一个新闻系统

    过滤器(Filter)可以对请求和响应进行拦截和处理,例如权限验证、字符编码转换等。监听器(Listener)则可以监听特定事件,如会话创建、销毁等,以实现特定功能,如会话超时处理。 **7. 页面跳转与请求转发** 在...

Global site tag (gtag.js) - Google Analytics