`
guozheng
  • 浏览: 71706 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

测试 web页面的加载处理时间(1)-Filter实现

    博客分类:
  • JDIC
阅读更多

      本周一个工作是写一个测试页面加载时间的程序。一开始根本就没有这个概念,就到网上查了下相关的资料,发现大概有三种方法:

      1.Filter实现,利用过滤器来记录时间。

      2.JS实现,在页面开始和结束的时候,记录时间,然后进行操作。

      3.利用监听器记录时间。比如JDIC组件的监听功能。

      不知道有没有更好的方法了,本来想利用java里的net相关东西实现的,看了api好像实现不了。如果大家有更好的思路请交流下。

   

      下面先介绍Filter实现。这个实现完全来自网络。

 

       来自:

http://hi.baidu.com/zhouhuitong/blog/item/d463623da7f7f5e93c6d9766.html

   

CalcPageLoadingTimeFilter.java

 

import java.io.IOException;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

 

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

 

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

 

public class CalcPageLoadingTimeFilter implements Filter {

    /*

    * (non Javadoc)

    *

    * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,

    * javax.servlet.ServletResponse, javax.servlet.FilterChain)

    */

    public void doFilter(ServletRequest request, ServletResponse response,

            FilterChain chain) throws IOException, ServletException {

        Log log = LogFactory.getLog(CalcPageLoadingTimeFilter.class);

 

        Date startTime = Calendar.getInstance().getTime();

        long startTimeLong = Calendar.getInstance().getTimeInMillis();

 

        String uri = ((HttpServletRequest) request).getRequestURI();

        boolean logTime = false;

        if (uri.indexOf(".html") > 0) { // 判断pge loading

                                        // time记录条件,这里大家可以根据自己的情况加以改变或者去掉该条件

            logTime = true;

        }

 

        if (logTime) {

            log.info("[TIME-CALC]URI:" + uri);

            String formatedTime = formatDate(startTime, "yy.MM.dd HH:mm:ss");

            log.info("[TIME-CALC]Start:" + formatedTime);

        }

 

        try {

            chain.doFilter(request, response);

        } finally {

            Date endTime = Calendar.getInstance().getTime();

            long endTimeLong = Calendar.getInstance().getTimeInMillis();

 

            if (logTime) {

                String formatedTime = formatDate(endTime, "yy.MM.dd HH:mm:ss");

                log.info("[TIME-CALC]End:" + formatedTime);

                log.info("[TIME-CALC]Total:" + (endTimeLong - startTimeLong)

                        + "ms. " + (endTimeLong - startTimeLong) / 1000 + "s.");

            }

        }

    }

 

    private static final String formatDate(Date date, String pattern) {

        DateFormat df = new SimpleDateFormat(pattern);

 

        return df.format(date);

 

    }

 

    public void init(FilterConfig filterConfig) throws ServletException {

 

    }

 

    public void destroy() {

 

    }

}

 

Filter添加到web.xml里面(由于我的web.xml已经添加了一个Filterweb.xml允许添加多个FIlter,请注意他们的添加顺序,粉红色部分即是要添加的Filter

web.xml

。。。 。。。

<filter>

        <filter-name>redirect</filter-name>

        <filter-class>org.apache.tapestry.RedirectFilter</filter-class>

    </filter>

    <!-- Filter -->

    <filter>

        <filter-name>CalcPageLoadingTimeFilter</filter-name>

        <filter-class>com.doone.pcdoctor.test.CalcPageLoadingTimeFilter</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>redirect</filter-name>

        <url-pattern>/</url-pattern>

    </filter-mapping>

    <!-- filter-mapping -->

    <filter-mapping>

        <filter-name>CalcPageLoadingTimeFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

。。。 。。。

 

重新启动服务器,则会自动记录日志。

上面的来自网络,自己简单的试验了,可以实现。

 

分享到:
评论

相关推荐

    Java-filter测试程序

    - **性能优化**:通过对响应进行GZIP压缩,可以减少网络传输的数据量,提高页面加载速度。 - **日志记录**:记录每个请求的详细信息,便于问题排查和系统监控。 - **字符编码转换**:确保请求和响应的编码一致,...

    java web考试之编程大题-----列出用户信息

    【标题】"java web考试之编程大题-----列出用户信息"揭示了这道编程题目的核心,即在Java Web环境中实现用户信息的列举功能。Java Web是Java技术在Web开发中的应用,它包括Servlet、JSP(JavaServer Pages)、JSTL...

    spring MVC所需jar包和filter的配置

    &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;/filter-class&gt; &lt;init-param&gt; &lt;param-name&gt;encoding&lt;/param-name&gt; &lt;param-value&gt;UTF-8&lt;/param-value&gt; &lt;/init-param&gt; &lt;init-param&gt; ...

    jsp动态页面转化静态化--实例

    3. 实现静态化逻辑:在Servlet或Filter中,当接收到请求时,判断是否需要生成静态页面。如果需要,可以使用JSP的`javax.servlet.jsp.JspWriter`对象将JSP内容写入到HTML文件中,然后返回该HTML文件的路径。 4. 配置...

    jfreechart的WEB图表开发_____个人测试

    - **Servlet与JSP**:如果是在Java Web环境下,Servlet用于处理请求和生成图像,JSP则用于展示HTML页面,两者结合实现交互式图表。 - **AJAX**:为了实现图表的动态更新,可以使用AJAX技术异步获取新的数据,然后...

    Java Web 测试题及参考答案

    %&gt;`是JSP中的脚本元素之一,用于定义局部作用域的变量、方法等,这些定义在页面加载时仅执行一次。 **8. JSP页面中使用`&lt;jsp:useBean&gt;`标签设置bean的作用域为会话级别。** - **选项分析**: - a)page(错误) -...

    Filter进行权限控制

    在`web.xml`文件中,我们需要定义`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素,指定过滤器类和需要拦截的URL模式。例如: ```xml &lt;filter&gt; &lt;filter-name&gt;LoginFilter&lt;/filter-name&gt; &lt;filter-class&gt;...

    loadrunnerWeb函数-4页.pdf

    5. **web_url**:此函数加载指定的URL,是最基本的页面加载函数,用于访问网页。 6. **web_set_certificate** 和 **web_set_certificate_ex**:这两个函数涉及到HTTPS安全连接,用于指定Vuser使用的证书和密钥信息...

    LR中的WEB函数列表

    LoadRunner 是一款强大的性能测试工具,特别适用于Web应用程序。它提供了丰富的Web函数库,以便用户在录制和编写Vuser(虚拟用户)脚本时能够精确地模拟用户行为。以下是一些重要的LoadRunner Web函数的详细说明: ...

    Python Web 接口开发文档

    ### Python Web 接口开发与测试知识点概览 #### Python 学习必备基础知识 - **Python2与Python3的选择** - Python3是未来发展的主要方向,建议学习者优先选择Python3进行学习。 - Python2已于2020年停止支持,...

    [学通Java.Web的24堂课].陈丹丹&amp;卢瀚.扫描版

    1. **Java Web概述**: - Java Web技术是基于Java平台的一种Web应用程序开发方式。 - 它利用Java语言的强大功能,实现动态网站的构建与维护。 - Java Web应用可以运行在多种操作系统上,具有跨平台性。 2. **Web...

    web.xml配置[归纳].pdf

    这样的配置使得DWR能够处理所有以`/dwr/`开头的请求,并且在`debug`为`true`时,可以查看DWR自动生成的测试页面。 总结来说,`web.xml`是Java Web应用的灵魂,通过精确配置,我们可以控制Spring的上下文加载、过滤...

    wg-wheel-filter:从Watch Gang轮选择页面过滤手表

    考虑到大量手表数据可能导致页面加载速度变慢,开发者可能采用了懒加载、分页或预加载等策略,以提升用户体验。 8. **数据分析**: 通过对用户筛选行为的追踪,可以收集数据,了解用户的偏好,这对于产品改进和...

    loadrunnerWeb函数[归类].pdf

    LoadRunner 是一款功能强大的负载测试工具,尤其在软件开发领域中,它被广泛用于测试Web应用程序的性能和稳定性。在LoadRunner中,Web函数是进行Web应用模拟和脚本录制的关键元素,它们允许测试人员模拟用户的实际...

    java web典型模块大全 5-7章代码

    4. **Filter链**:多个过滤器按照配置顺序串联执行,实现灵活的请求处理逻辑。 通过学习上述章节的代码,开发者可以掌握Java Web应用的基本架构和常用组件,为构建更复杂的应用打下坚实的基础。同时,实践这些代码...

    Tamper data

    1. **网页开发和调试**:Web开发者可以使用Tamper Data检查和调整页面加载过程中的请求,以解决加载问题、优化性能或理解JavaScript如何与服务器通信。 2. **API测试**:对于API开发者和测试人员,Tamper Data可以...

    JSP测试题1(有答案)

    9. 关于 JSP 的隐式对象,正确的描述是:隐式对象是 web 容器加载的一组对象,可以直接在 JSP 页面使用。 知识点:JSP 中的隐式对象是 web 容器加载的一组对象,例如 request、response、session 等,可以直接在 ...

    servlet-api-3.0-alpha-1.jar

    新的API允许开发者自定义静态资源(如CSS、JavaScript文件)的处理方式,可以实现缓存控制、GZIP压缩等优化,提高页面加载速度。 8. **安全增强** Servlet 3.0提供了更多的安全特性,例如对HTTP基本认证的支持,...

    SSH框架整合

    &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;/filter-class&gt; &lt;init-param&gt; &lt;param-name&gt;encoding&lt;/param-name&gt; &lt;param-value&gt;utf-8&lt;/param-value&gt; &lt;/init-param&gt; &lt;/filter&gt; ...

    iframe-ad-filter:chrome插件DIY体验

    2. **编写内容脚本** - 使用JavaScript,我们可以在页面加载时注入脚本,监听和操作DOM元素。对于`iframe-ad-filter`,我们需要找到所有的IFrame元素,然后根据预设的规则或黑名单决定是否过滤它们。这通常涉及DOM...

Global site tag (gtag.js) - Google Analytics