使用Filter计算请求耗时

有时为了更详细的检测web系统性能,需要计算每次请求到响应所耗费的时间,然后看看哪些请求耗时较多,从而有针对性的进行优化操作,此时可以使用Filter过滤器自己实现一个请求响应耗时计算的功能。每个请求在到达目标资源之前都会被Filter过滤器拦截,我们可以在请求到达之前获取系统当前的时间,每个响应也会先被Filter过滤器拦截,我们在此时也获取一下系统的当前时间,之后将两次时间作比较就能计算出这次请求响应所耗费的时间了。

创建一个Filter过滤器

package com.monkey1024.filter;

import javax.servlet.*;

import javax.servlet.annotation.WebFilter;

import javax.servlet.http.HttpServletRequest;

import java.io.IOException;

import java.time.Duration;

import java.time.LocalTime;

@WebFilter(filterName = "TimeFilter",urlPatterns = "/*")

public class TimeFilter implements Filter {

public void destroy() {

}

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {

HttpServletRequest request = (HttpServletRequest) req;

//请求时的系统时间

LocalTime time1 = LocalTime.now();

chain.doFilter(req, resp);

//响应时的系统时间

LocalTime time2 = LocalTime.now();

//计算请求响应耗时

Duration total = Duration.between(time1, time2);

System.out.println(request.getRequestURI() + "耗时:" + total.toMillis());

}

public void init(FilterConfig config) throws ServletException {

}

}

通过上面的Filter过滤器就可以计算每次请求响应的耗时了,并且还可以查看到请求的目标资源,从而有针对性的做优化处理。

创建一个用于测试的Servlet:

package com.monkey1024.servlet;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet(name = "TestServlet",urlPatterns = {"/test"})

public class TestServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//为了查看效果,所以睡眠3秒

try {

Thread.sleep(3000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

}

怎么看java请求耗时_使用Filter计算请求耗时相关推荐

  1. 地铁看java书女生_地铁上背单词的女孩

    公历一月底的成都,几乎已经到了成都这座城市一年当中最冷的时候了. 早上出门的时候天几乎是全黑的,我骑着自行车前往地铁站,在寒风中我不禁缩了缩脖子.因为我上班比较远,所以我出门比较早,这个时候街上的行人 ...

  2. idea看java版本设置_详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用)...

    详解IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用) 有时候需要看Java源码,但是 Java 1.7 和 Java 1.8的差别的关系,有时候你想查看不同jd ...

  3. 如何看java进程端口_查看一个进程对应的端口号

    一.liunx 下 1.查找指定目标项目(atf web工程)进程的pid ps -aux | grep atf root 3582 0.1 11.2 382228 190588 ? Sl 09:31 ...

  4. cefsharp 发送请求服务器_超高性能管线式HTTP请求(实践·原理·实现)

    来源:https://www.cnblogs.com/lulianqi/p/8167526.html 这里的高性能指的就是网卡有多快请求发送就能有多快,基本上一般的服务器在一台客户端的压力下就会出现明 ...

  5. wx.chooseimage 超过了最大请求长度_一次 HTTP 请求到底经历了什么?

    作者:木木匠 链接:https://url.cn/5ER9kt2 今天这篇文章我们用抓包分析工具来分析 HTTP 请求是怎么样的? 环境准备 本来是想找个网站进行抓包分析的,但是正式环境的网站 HTT ...

  6. 埃森哲java开发怎么样_花费2亿,耗时2年,网站还没建完,咨询公司埃森哲被告上法庭!...

    本文作者:靠谱的小灶君 全文共3158字,预计阅读8分钟 耗费2个多亿,耗时2年多 连一个可用的网站都无法交付 想要完工?那就再交1000万美元 美国汽车租赁公司赫兹(Hertz)一怒之下 将知名咨询 ...

  7. 腾讯java程序设计师_腾讯大神耗时三年巅峰之作,立足实际开发,详解高并发程序设计...

    写在前面 毫无疑问,Java是目前服务端程序最常用的编程语言之一.大量的服务端应用基于这个看似简单的开发语言,然而容易入门并不代表容易精通.其中高并发程序设计就是一个重点,也是一个难点. ps:下面小 ...

  8. 手机如何能看java文件管理器_基于安卓Android的手机文件管理器的设计(AndroidStudio)...

    基于安卓Android的手机文件管理器的设计(AndroidStudio)(论文13000字,程序代码) 摘要:本文的目标是设计开发出一款Android手机文件管理器,首先介绍了开发工具和开发语言的来 ...

  9. java mediatype属性_基于ServletRequest实现请求获取内容类型的媒体类型MediaType、字符集Charset的工具类ContentTypeUtil...

    一.源码说明 基于springframework的org.springframework.http.MediaType通过ServletRequest对象分别获取到媒体类型.字符集类型,具体工具类Co ...

最新文章

  1. 树状dp(这个人写得好多转来慢慢看)
  2. 生信和植物领域最新资讯合集
  3. tc写入txt成功却没有内容_挖洞经验 | 构造UserAgent请求头内容实现LFI到RCE提权
  4. 互联网协议 — TLS — SNI
  5. python天天学怎么样-Python天天学_01_基础1
  6. 查询分析300万笔记录_一分钟狂销100万件商品!Shopee虾皮双12大促再创记录
  7. R eentrantLock的源码分析
  8. 【读书笔记《Android游戏编程之从零开始》】6.Android 游戏开发常用的系统控件(TabHost、ListView)...
  9. Angular4学习笔记(六)- Input和Output
  10. 易语言写组合框内容MySQL_易语言组合框赋值的几种方法
  11. 15.三数之和-LeetCode
  12. How to integrate iAD in your iOS App ?
  13. Excel如何批量根据身份证号码查询出地址
  14. c语言火车票退票系统流程图,[图解12306退票流程与步骤]
  15. 自定义百度网盘分享密码 提取码
  16. python计算条件概率_统计算法_概率基础
  17. 用java编写球体的体积,编写一个程序,提示用户输入球体的半径并打印其体积...
  18. 精简高效的CSS命名准则和方法
  19. sscom串口网络数据调试器使用post方法向华为云obs桶上传文件和图片
  20. Linux关于ls的命令有哪些,关于linux中ls意思,LS什么大全

热门文章

  1. [观点]IT项目管理的六种错误思维
  2. MIPI CSI接口调试方法: data rate计算
  3. 此身不向今生度, 更待何生度此身!
  4. Linux 下非 root 用户 Conda 安装生物信息 R 软件包 MetaboAnalystR 演示
  5. R700指令集架构参考手册第二章——2.5 程序状态
  6. 中国汽车CIO峰会专访F-One创始人曾晓丹(访谈实录)
  7. 如果本文帮到了你,请记得打赏~感谢您的支持!
  8. 学习如何使用微信小程序的for和foreach循环遍历获得索引和数据
  9. 大数据时代的智慧投教
  10. 计算机艺术设计专业就业前景,解读艺术设计专业及未来就业方向发展趋势