`
liyicun
  • 浏览: 14723 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

使用Filter统计Java(J2EE)的web程序http请求响应时间

阅读更多
作者: 核桃博客 |

本文网址:http://www.hetaoblog.com/j2ee-filter-performance-monitor-http-request

本博客所有文章全部原创,欢迎转载,

但必须以超链接形式标明文章原始出处和作者信息及版权声明

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

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

监控http请求的处理时间的方法有很多,这里介绍一种java(j2ee)的web程序中监控/统计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或者切换框架,都不需要任何改动;
分享到:
评论

相关推荐

    j2ee过滤器Filter使用详解(实例)

    过滤器在J2EE环境中扮演着预处理和后处理的角色,它可以拦截进入和离开Web应用程序的请求和响应,对数据进行处理或验证,从而提供诸如安全性、性能优化、内容过滤等功能。Filter接口是定义过滤器行为的核心,它包含...

    java j2ee面试题库

    Java J2EE是企业级应用开发的重要框架,它基于Java技术,提供了丰富的组件和服务来构建分布式、多层架构的应用程序。面试中,Java J2EE的相关知识是考察开发者技术实力的关键部分。以下是一些可能在Java J2EE面试中...

    J2EE程序设计2.ppt

    在实际开发中,掌握Servlet的生命周期、请求处理、会话管理、过滤器使用等高级技能是至关重要的,这将帮助开发者构建更高效、更安全的J2EE应用程序。理解Servlet的工作机制和接口使用,有助于提升Web服务的性能和可...

    java J2EE面试题集

    - **过滤器(Filter)**:如何实现过滤器,用于拦截请求或响应,进行预处理或后处理。 - **监听器(Listener)**:理解ServletContextListener、HttpSessionListener等监听器的作用和用法。 3. **JavaBeans和EJB*...

    j2ee web端知识及案例

    Web容器负责管理Servlet,Servlet是Java编写的小型服务器端程序,它们处理HTTP请求并返回响应。Servlet生命周期包括加载、初始化、服务、销毁四个阶段,开发者需通过实现Servlet接口或继承HttpServlet类来创建自定义...

    最基本的 Java Web 项目模板,无需 J2EE 环境

    Java Web 是一种用于构建互联网应用程序的技术,它基于Java语言,为开发者提供了丰富的工具和框架来创建动态、交互式的Web应用。在这个"最基本的 Java Web 项目模板"中,我们看到几个关键元素,它们对于理解Java Web...

    J2EE WEB开发的学习ppt

    1. **Servlet与JSP**:Servlet是Java Web应用的核心,用于接收和响应HTTP请求。JSP(JavaServer Pages)是动态网页技术,将HTML与Java代码结合在一起,简化视图层的开发。 2. **MVC设计模式**:理解Model-View-...

    J2EE Web层设计模式实例演练

    1. **Servlet过滤器(Filter)模式**:在lab08-Web设计模式.pdf中,你可能会学习到如何使用Servlet过滤器来拦截、修改或转发请求和响应。过滤器可以用来实现如认证、日志记录、字符编码转换等功能,它是Web层的一个...

    J2EE架构与程序设计

    实验一:第一个Java EE Web应用是课程的起点,它引导学生建立一个基本的Java Web项目,了解如何配置开发环境,创建Servlet和JSP页面,以及如何进行简单的请求响应处理。这为后续的学习打下了坚实的基础。 实验二:...

    j2ee 笔记 j2ee 笔记 j2ee 笔记

    - **Tomcat**:一个免费的开源Web容器,用于运行基于Java的Web应用程序。 部署步骤包括: 1. 编写Servlet源代码。 2. 将编译后的Servlet类文件放入`/WEB-INF/classes`目录下。 3. 修改`web.xml`文件,注册Servlet并...

    java web学习课件

    Servlet是Java中用于处理HTTP请求的核心组件,它是Java Web应用服务器中的一个Java程序,可以接收并响应来自客户端(如浏览器)的请求。Servlet生命周期包括加载、实例化、初始化、服务和销毁等阶段,开发者可以通过...

    j2ee项目使用filter和memcached实现session服务器

    在Java Web开发中,Filter是Servlet API的一部分,允许开发者在请求到达目标Servlet之前或之后拦截和处理请求。通过实现`javax.servlet.Filter`接口并重写`doFilter()`方法,我们可以对请求和响应进行预处理和后处理...

    Java_EE_PPT.rar_J2EE_JAVA EE_j2ee ppt_ppt of j2ee

    J2EE后来更名为Java EE,全称为Java Platform, Enterprise Edition,旨在简化企业软件开发,提供一组标准API和服务,支持Web应用程序、电子商务系统、企业级应用服务器等的开发。 在这些PPT资料中,你可能会学习到...

    j2ee开发filter课件和实例

    Filter在J2EE开发中的重要性不言而喻,它们允许开发者对HTTP请求和响应进行细粒度控制,实现各种业务需求。通过深入研究"j2ee开发filter课件和实例",你不仅可以了解Filter的基本概念,还能掌握实际应用技巧,提升...

    java企业级开发编程学习资料 Java EE教程 J2ee教程 Struts2 共200页.pptx

    ### Java企业级开发编程学习资料Java EE教程J2ee教程Struts2概览 #### Java EE与J2EE概述 Java EE(Java Platform, Enterprise Edition)是为开发可移植、健壮、可伸缩且安全的服务器端应用程序而设计的一个平台。...

    Java Web 网上书店管理系统

    【Java Web网上书店管理系统】是一个基于Java Web技术的J2EE应用程序,主要用于实现图书的在线销售、用户管理、订单处理等功能。这个系统的核心是利用Java的强大力量和灵活性,结合Web技术,为用户提供便捷的在线...

    [Java.API文档中文版].J2EE_V1.3_API

    Servlet API提供了Servlet和Filter的接口,使得开发者可以编写处理HTTP请求的代码,例如接收并响应网页请求,处理表单数据等。 2. **JavaServer Pages (JSP)**:JSP是用于创建动态网页的技术,它将HTML代码和Java...

    j2ee_API文档

    Java J2EE API文档是Java企业版(Java Platform, Enterprise Edition)的核心组成部分,它提供了用于构建分布式、基于组件的企业级应用程序的规范和接口。J2EE(现在被称为Java EE)是一个开放源代码平台,旨在简化...

    韩顺平j2ee视频实战教程

    Servlet是Java编程语言中用于扩展服务器功能的接口,它允许开发者创建能够处理HTTP请求的Java程序。在讲解中,韩顺平老师会详细阐述Servlet的生命周期、服务方法、请求与响应对象的使用、会话管理、过滤器和监听器等...

    JAVA WEB从入门到精通 随书源码

    Java Web技术是开发基于互联网应用程序的关键工具,尤其在企业级应用领域,如J2EE(Java 2 Platform, Enterprise Edition)框架下,它扮演着重要角色。本资源包含"JAVA WEB从入门到精通"这本书随书附带的第2到第10章...

Global site tag (gtag.js) - Google Analytics