本周一个工作是写一个测试页面加载时间的程序。一开始根本就没有这个概念,就到网上查了下相关的资料,发现大概有三种方法:
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已经添加了一个Filter,web.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>
。。。 。。。
重新启动服务器,则会自动记录日志。
上面的来自网络,自己简单的试验了,可以实现。
分享到:
相关推荐
- **性能优化**:通过对响应进行GZIP压缩,可以减少网络传输的数据量,提高页面加载速度。 - **日志记录**:记录每个请求的详细信息,便于问题排查和系统监控。 - **字符编码转换**:确保请求和响应的编码一致,...
【标题】"java web考试之编程大题-----列出用户信息"揭示了这道编程题目的核心,即在Java Web环境中实现用户信息的列举功能。Java Web是Java技术在Web开发中的应用,它包括Servlet、JSP(JavaServer Pages)、JSTL...
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> ...
3. 实现静态化逻辑:在Servlet或Filter中,当接收到请求时,判断是否需要生成静态页面。如果需要,可以使用JSP的`javax.servlet.jsp.JspWriter`对象将JSP内容写入到HTML文件中,然后返回该HTML文件的路径。 4. 配置...
- **Servlet与JSP**:如果是在Java Web环境下,Servlet用于处理请求和生成图像,JSP则用于展示HTML页面,两者结合实现交互式图表。 - **AJAX**:为了实现图表的动态更新,可以使用AJAX技术异步获取新的数据,然后...
%>`是JSP中的脚本元素之一,用于定义局部作用域的变量、方法等,这些定义在页面加载时仅执行一次。 **8. JSP页面中使用`<jsp:useBean>`标签设置bean的作用域为会话级别。** - **选项分析**: - a)page(错误) -...
在`web.xml`文件中,我们需要定义`<filter>`和`<filter-mapping>`元素,指定过滤器类和需要拦截的URL模式。例如: ```xml <filter> <filter-name>LoginFilter</filter-name> <filter-class>...
5. **web_url**:此函数加载指定的URL,是最基本的页面加载函数,用于访问网页。 6. **web_set_certificate** 和 **web_set_certificate_ex**:这两个函数涉及到HTTPS安全连接,用于指定Vuser使用的证书和密钥信息...
LoadRunner 是一款强大的性能测试工具,特别适用于Web应用程序。它提供了丰富的Web函数库,以便用户在录制和编写Vuser(虚拟用户)脚本时能够精确地模拟用户行为。以下是一些重要的LoadRunner Web函数的详细说明: ...
### Python Web 接口开发与测试知识点概览 #### Python 学习必备基础知识 - **Python2与Python3的选择** - Python3是未来发展的主要方向,建议学习者优先选择Python3进行学习。 - Python2已于2020年停止支持,...
1. **Java Web概述**: - Java Web技术是基于Java平台的一种Web应用程序开发方式。 - 它利用Java语言的强大功能,实现动态网站的构建与维护。 - Java Web应用可以运行在多种操作系统上,具有跨平台性。 2. **Web...
这样的配置使得DWR能够处理所有以`/dwr/`开头的请求,并且在`debug`为`true`时,可以查看DWR自动生成的测试页面。 总结来说,`web.xml`是Java Web应用的灵魂,通过精确配置,我们可以控制Spring的上下文加载、过滤...
考虑到大量手表数据可能导致页面加载速度变慢,开发者可能采用了懒加载、分页或预加载等策略,以提升用户体验。 8. **数据分析**: 通过对用户筛选行为的追踪,可以收集数据,了解用户的偏好,这对于产品改进和...
LoadRunner 是一款功能强大的负载测试工具,尤其在软件开发领域中,它被广泛用于测试Web应用程序的性能和稳定性。在LoadRunner中,Web函数是进行Web应用模拟和脚本录制的关键元素,它们允许测试人员模拟用户的实际...
4. **Filter链**:多个过滤器按照配置顺序串联执行,实现灵活的请求处理逻辑。 通过学习上述章节的代码,开发者可以掌握Java Web应用的基本架构和常用组件,为构建更复杂的应用打下坚实的基础。同时,实践这些代码...
1. **网页开发和调试**:Web开发者可以使用Tamper Data检查和调整页面加载过程中的请求,以解决加载问题、优化性能或理解JavaScript如何与服务器通信。 2. **API测试**:对于API开发者和测试人员,Tamper Data可以...
9. 关于 JSP 的隐式对象,正确的描述是:隐式对象是 web 容器加载的一组对象,可以直接在 JSP 页面使用。 知识点:JSP 中的隐式对象是 web 容器加载的一组对象,例如 request、response、session 等,可以直接在 ...
新的API允许开发者自定义静态资源(如CSS、JavaScript文件)的处理方式,可以实现缓存控制、GZIP压缩等优化,提高页面加载速度。 8. **安全增强** Servlet 3.0提供了更多的安全特性,例如对HTTP基本认证的支持,...
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> ...
2. **编写内容脚本** - 使用JavaScript,我们可以在页面加载时注入脚本,监听和操作DOM元素。对于`iframe-ad-filter`,我们需要找到所有的IFrame元素,然后根据预设的规则或黑名单决定是否过滤它们。这通常涉及DOM...