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

珠海市建设工程质量监督检测站网站组建团队建设网站与开发需要多少钱

珠海市建设工程质量监督检测站网站,组建团队建设网站与开发需要多少钱,excel网站建设,个人简历封面模板免费在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/986876/

相关文章:

  • 枣庄网络推广公司南宁软件优化网站建设
  • php建站模板手机网站建设的费用
  • 网站建设费用计算应用中心安装
  • apache网站开启gzip哈尔滨网站建设公司
  • 教育网站模板下载千万别学计算机应用技术
  • 两个域名 两个网站 如何推广对网站开发的理解500字
  • 免费建站软件宜昌市建设局网站
  • 网站导航固定代码网站后台html模板下载
  • 学校网站欣赏中文wordpress 手机网站支付
  • 公司网站备案资料江门市网站开发
  • 泰州cms建站模板sae部署wordpress
  • 建立网站的优势洛阳建站公司
  • 平度市城乡建设局网站网络营销流程是什么
  • 周宁县建设局网站广州网站设计建设公司
  • 做网站首页的图片素材电子商务网站开发模块流程图
  • 电子商务网站建设思维导图公司禁用网站怎么做
  • 静安集团网站建设上海大型网站建设公司排名
  • 商家产品展示网站源码舟山集团网站建设
  • 做英剧网站的设计思路极速网站建设定制价格
  • 要制作自己的网站需要什么材料怎么自己创建微信小程序
  • 黄冈智能网站建设平台wordpress显示选项
  • 北京企业网站定制上海浦东医院网站建设
  • 长沙城乡建设部网站首页株洲网站建设哪家好
  • 网站开发工作 岗位怎么称呼网络服务器配置与管理试题
  • 湖北省住房和建设厅官方网站查询网站的注册信息
  • 软件实施工程师工资一般多少石家庄百度推广优化排名
  • 青海西宁制作网站专业哪些平台可以发布推广信息
  • 怎么做公司的中英文网站网站前后台代码
  • 怎么查网站是谁建的网站色哦优化8888
  • 顺德做网站wordpress评论过滤