当前位置: 首页 > news >正文

苏州建网站的公司平台收费标准做网站小程序源码

苏州建网站的公司平台收费标准,做网站小程序源码,发布视频的平台大全,六安发布统计请求的处理时间#xff08;用时#xff09;既可以使用 Servlet 过滤器#xff08;Filter#xff09;#xff0c;也可以使用 Spring 拦截器#xff08;Interceptor#xff09;。两者都可以在请求处理前后插入自定义逻辑#xff0c;从而实现对请求响应时间的统计。 … 统计请求的处理时间用时既可以使用 Servlet 过滤器Filter也可以使用 Spring 拦截器Interceptor。两者都可以在请求处理前后插入自定义逻辑从而实现对请求响应时间的统计。 使用建议 如果你需要在更底层、与框架无关的地方记录所有请求包括静态资源请求的处理时间那么 Servlet 过滤器是一个更好的选择。 如果你正在使用 Spring MVC 并且关注的是 Controller 层的处理时间或者需要访问到 Spring 上下文中的服务那么 Spring 拦截器可能更为合适。 代码样例 Servlet 过滤器Filter import jakarta.servlet.*; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component;import java.io.IOException; import java.time.Instant;// Component 注册时会new 这里无需指定 registration.setFilter(new LogFilter()); Slf4j public class LogFilter implements Filter {Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.err.println(***LogFilter.doFilter.start***);HttpServletRequest httpReq (HttpServletRequest) request;long startTime Instant.now().toEpochMilli();// 记录请求开始时间及请求信息log.warn(LogFilter.doFilter: Start processing request at {} - {}, Instant.now(), httpReq.getRequestURI());try {// 将请求传递给下一个过滤器或目标资源chain.doFilter(request, response);} finally {// 记录请求结束时间及响应状态码long endTime Instant.now().toEpochMilli();int statusCode ((HttpServletResponse) response).getStatus();log.warn(LogFilter.doFilter: Finished processing request at {} - {} in {} ms. Status code: {}, Instant.now(), httpReq.getRequestURI(), (endTime - startTime), statusCode);}System.err.println(***LogFilter.doFilter.end***);} }注册过滤器Filter Configuration public class AppConfig {Beanpublic FilterRegistrationBeanLogFilter tokenFilterRegistration() {FilterRegistrationBeanLogFilter registration new FilterRegistrationBean();registration.setFilter(new LogFilter());// 可以设置过滤器名称registration.setName(logFilter);// 设置拦截规则registration.addUrlPatterns(/*); // 拦截所有请求// 设置过滤器执行顺序默认为0数值越小优先级越高registration.setOrder(1);return registration;} }Spring 拦截器Interceptor import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import java.time.Instant;Component Slf4j public class LogInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {System.err.println(***LogInterceptor.preHandle***);long startTime Instant.now().toEpochMilli();request.setAttribute(startTime, startTime);log.warn(LogInterceptor.postHandle: Start processing request at {} - {}, Instant.now(), request.getRequestURI());return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {System.err.println(***LogInterceptor.preHandle***);// 获取请求开始时间Long startTime (Long) request.getAttribute(startTime);if (startTime ! null) {long executionTime Instant.now().toEpochMilli() - startTime;int statusCode response.getStatus();log.warn(LogInterceptor.postHandle: Finished processing request at {} - {} in {} ms. Status code: {}, Instant.now(), request.getRequestURI(), executionTime, statusCode);}}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.err.println(***LogInterceptor.afterCompletion***);// 在此可以添加额外的后处理逻辑但本例中我们不需要} }注册拦截器Interceptor Configuration public class WebMvcConfig implements WebMvcConfigurer {Autowiredprivate ResponsePostInterceptor responsePostInterceptor;Autowiredprivate LogInterceptor logInterceptor;/*** 为拦截器注册表添加拦截器** param registry 拦截器注册表*/Overridepublic void addInterceptors(InterceptorRegistry registry) {// 在Spring MVC配置中注册一个名为responsePostInterceptor的拦截器使其能够对匹配路径“/**”即对应用程序中的所有路径的请求进行拦截registry.addInterceptor(responsePostInterceptor).addPathPatterns(/**);registry.addInterceptor(logInterceptor).addPathPatterns(/**);} }[Ref] 在Spring Boot中注册过滤器几种方式 测试验证 # 过滤器开始计时 ***LogFilter.doFilter.start*** [2024-01-17 08:17:55] [WARN ] [http-nio-8080-exec-2] [LogFilter.java:22] → [LogFilter.doFilter: Start processing request at 2024-01-17T00:17:55.662652400Z - /students] ***RequestHeaderCheckFilter.doFilter.start***# 拦截器组的 preHandle ***ResponsePostInterceptor.preHandle*** # log用时拦截器开始计时 ***LogInterceptor.preHandle*** [2024-01-17 08:17:55] [WARN ] [http-nio-8080-exec-2] [LogInterceptor.java:20] → [LogInterceptor.postHandle: Start processing request at 2024-01-17T00:17:55.852229500Z - /students]# Controller层 ***StudentController.edit*** [2024-01-17 08:17:56] [INFO ] [http-nio-8080-exec-2] [HikariDataSource.java:110] → [practisedb - Starting...] [2024-01-17 08:17:56] [INFO ] [http-nio-8080-exec-2] [HikariPool.java:565] → [practisedb - Added connection com.mysql.cj.jdbc.ConnectionImpl34a6ebfc] [2024-01-17 08:17:56] [INFO ] [http-nio-8080-exec-2] [HikariDataSource.java:123] → [practisedb - Start completed.]# ControllerAdvice对Response增强比如修改状态码补充header值 ***ResponsePostAdvice.supports*** ***ResponsePostAdvice.beforeBodyWrite***# 拦截器组的 postHandle ***LogInterceptor.postHandle*** # log用时拦截器结束计时 [2024-01-17 08:17:56] [WARN ] [http-nio-8080-exec-2] [LogInterceptor.java:32] → [LogInterceptor.postHandle: Finished processing request at 2024-01-17T00:17:56.636557900Z - /students in 784 ms. Status code: 200] ***ResponsePostInterceptor.postHandle***# 拦截器组的 afterCompletion ***LogInterceptor.afterCompletion*** ***ResponsePostInterceptor.afterCompletion***# 过滤器结束计时 ***RequestHeaderCheckFilter.doFilter.end*** [2024-01-17 08:17:56] [WARN ] [http-nio-8080-exec-2] [LogFilter.java:31] → [LogFilter.doFilter: Finished processing request at 2024-01-17T00:17:56.920165800Z - /students in 1258 ms. Status code: 200] ***LogFilter.doFilter.end***
http://www.hkea.cn/news/14561106/

相关文章:

  • 只有域名可以做网站吗太平洋建设网站
  • 江门网站优化公司韶关市住房和城乡建设局网站
  • 广州网站制作在线建设网站所采用的技术方案
  • 做个网页需要多少钱怀化优化办
  • 怎么提高网站seo优化关键字排名推广文案怎么写吸引人
  • 漳州网站建设优化排名怎么删除一个wordpress
  • 帝国cms怎么做网站wordpress 用户管理插件
  • 北京高端网站建设制作设计哈尔滨到牡丹江
  • 如何建立免费网站手机网站免费做app
  • net的网站建设阿里巴巴网站建设的态度虚心
  • 云南网站优化哪家好北京保障房建设网站
  • 建酒店网站交互设计软件有哪些
  • 专业的移动网站建设wordpress两个侧边栏
  • 建站公司怎么获客一家专门做护肤的网站
  • 趣图在线生成网站源码厦门北京网站建设公司哪家好
  • 番禺建设银行网站首页wordpress当前分类文章
  • 平顶山建设银行网站版面设计图大全模板
  • 营销型网站建设tfx88网站后台登入不了出现验证码错误
  • 电子商务网站建设开题报告WORDPRESS摘要无效
  • 厚街网站建设报价网站域名查询ip
  • 织梦网站安装播放视频插件下载开发游戏的职业叫什么
  • 家政门户网站源码网页设计结束语
  • 做餐饮的网站建设工程资质录入是在那个网站
  • 什么网站的新闻做参考文献网站建设宣传广告语
  • 学院网站规划方案泰安诚信的企业建站公司
  • 怎么做网站诊断分析廉洁文化网站建设方案
  • 网站建设后台cms管理系统方案昆山哪里有人做网站
  • 单页面网站怎么做连云港高端网站建设
  • 网站建设资质备案三维建模
  • 省水利工程建设信息网站源码交易网站源码