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

新网站排名优化软件工程师招聘简章

新网站排名优化,软件工程师招聘简章,现在还有网站做校内网吗,宝安区网站建设在Web应用中,过滤器(Filter)是一个强大的工具,它可以在请求到达目标资源之前或响应返回客户端之前对请求或响应进行拦截和处理。然而,在某些情况下,我们可能希望确保过滤器逻辑在一次完整的HTTP请求中仅执行…

在Web应用中,过滤器(Filter)是一个强大的工具,它可以在请求到达目标资源之前或响应返回客户端之前对请求或响应进行拦截和处理。然而,在某些情况下,我们可能希望确保过滤器逻辑在一次完整的HTTP请求中仅执行一次,即使请求在服务器内部经过了多次转发(forward)或包含多个资源请求。Spring框架的OncePerRequestFilter就是为了满足这一需求而设计的。

一、OncePerRequestFilter 概述

OncePerRequestFilter是Spring提供的一个过滤器基类,它确保了在一次完整的HTTP请求中,无论请求经过多少次内部转发,过滤器的逻辑都只会被执行一次。这对于需要在请求处理之前或之后进行一次性设置或清理资源的场景特别有用。

二、OncePerRequestFilter 的原理

OncePerRequestFilter通过内部使用HttpServletRequest的getAttribute和setAttribute方法,以及一个ThreadLocal变量来跟踪当前请求是否已经被处理过。当请求首次进入过滤器时,OncePerRequestFilter会检查是否已经存在一个与当前请求关联的标记。如果不存在,则执行过滤器的逻辑,并将一个标记与当前请求关联起来;如果已经存在,则直接跳过过滤器的逻辑。

三、OncePerRequestFilter 的使用

要使用OncePerRequestFilter,你需要创建一个类并继承它,然后重写doFilterInternal方法。doFilterInternal方法是实际执行过滤器逻辑的地方。

下面是一个简单的示例,展示了一个自定义的OncePerRequestFilter,它在请求到达目标资源之前记录请求的开始时间,并在响应返回客户端之前记录请求的处理时间:

import org.springframework.web.filter.OncePerRequestFilter;  
import javax.servlet.FilterChain;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import java.io.IOException;  public class TimingFilter extends OncePerRequestFilter {  @Override  protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)  throws ServletException, IOException {  // 记录请求开始时间  long startTime = System.currentTimeMillis();  // 继续过滤器链  filterChain.doFilter(request, response);  // 记录请求处理时间  long endTime = System.currentTimeMillis();  long duration = endTime - startTime;  System.out.println("Request took " + duration + " ms to process");  }  
}

四、注册 OncePerRequestFilter

要将自定义的OncePerRequestFilter注册到Spring应用中,你可以使用Java配置或XML配置。在Java配置中,你可以创建一个FilterRegistrationBean的Bean来注册你的过滤器:

import org.springframework.boot.web.servlet.FilterRegistrationBean;  
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Configuration;  @Configuration  
public class FilterConfig {  @Bean  public FilterRegistrationBean<TimingFilter> timingFilterRegistration() {  FilterRegistrationBean<TimingFilter> registration = new FilterRegistrationBean<>();  registration.setFilter(new TimingFilter());  registration.addUrlPatterns("/*"); // 设置过滤器拦截的URL模式  return registration;  }  
}

五、总结

OncePerRequestFilter是Spring框架中一个非常有用的工具,它可以帮助你在一次完整的HTTP请求中仅执行一次过滤器的逻辑。通过继承OncePerRequestFilter并重写doFilterInternal方法,你可以轻松地创建自定义的过滤器来处理各种需求。无论是在记录请求处理时间、设置请求属性、进行权限验证等方面,OncePerRequestFilter都能为你提供强大的支持。

参考文献:

  • https://springdoc.cn/spring-onceperrequestfilter/
http://www.yayakq.cn/news/168145/

相关文章:

  • 如何是网站排名上升西城网站建设浩森宇特
  • 免费建企业网站做淘客哪个网站好点
  • 白山市网站建设网站需求文档
  • 浏阳网页设计网站优化难吗
  • 搜索公司信息的网站免费网页制作平台
  • 医疗网站优化怎么做接做网站私活
  • 建设企业功能网站洛阳搜索引擎优化
  • 网站百度抓取17一起做网站包包
  • 江山做网站怎么做一考试网站
  • 地产公司网站建设如何用api做网站
  • 福建省建设工程继续教育网站个人信息查询
  • 做期货要看哪些网站全国十大家装公司排名
  • 做网站 分辨率应该是多少iis网站正在建设中
  • 专业手机网站制作公司网站主题设计特色
  • 网站外链坏处wordpress反斜杠安装
  • 海尔网站建设投入seo辅助
  • 蚌埠建设学校网站青岛建筑
  • 福州网站制作建设不知此网站做男人也
  • 做gif动图的网站犯法吗网页游戏单机
  • 对网站的赏析用商城系统做教育网站
  • 给手机做网站的公司有哪些网页设计跳转链接怎么制作
  • 网站开发运行详细步骤做招聘网站如何宣传
  • 西安网站关键词优化费用商场设计方案ppt
  • 快手评论点赞网站建设专业分站wordpress两个菜单栏
  • 网站建设学习东西网站备案流程2016
  • 湛江在线制作网站营销代码是什么
  • 学编程的好处seo课程培训班
  • 网站框架搭建设计网站后台是什么
  • 电子商城官方网站企业网站平台
  • 昆明猫咪科技网站建设腾讯云一键wordpress