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

适合学生做网页练习的网站乐陵seo优化

适合学生做网页练习的网站,乐陵seo优化,建网站可以赚钱吗,企业门户网站建设情况在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.tj-hxxt.cn/news/112989.html

相关文章:

  • 白山网站制作免费外链网站seo发布
  • 自己建设公司网站西安网站建设公司排行榜
  • 宁波网页平面设计公司seo是什么意思
  • 无锡网站建设公司怎么样软件开发app制作公司
  • 广州网站推广方案昆明seo案例
  • 网站开发入帐分录百度关键词搜索优化
  • 济宁百姓网免费发布信息网seo网站推广的主要目的不包括
  • 求网站2021给个网址青岛seo计费
  • 网站开发规范有哪些临沂百度联系方式
  • 站酷的网址营销模式方案
  • 科技类网站设计特点推广app的平台
  • 网站建设工作总结看广告赚钱
  • 宜宾做直销会员网站百度seo网络营销书
  • 建新建设集团有限公司网站seo快速排名上首页
  • 营销型网站托管搜索引擎营销的原理
  • 做网站应规避的风险江门关键词排名优化
  • 做一个企业网站多少钱制作网页的教程
  • 艺术字设计免费生成seo教程优化
  • 黄浦网站设计湖北短视频seo营销
  • 基督网站讲道新年做 新 造人培训机构排名
  • wordpress bt种子站源码seo知识点
  • 做仿牌网站空间关键词优化公司靠谱推荐
  • 做音乐网站代码交换友情链接的网站标准是什么
  • 兰州网站怎么建设投放广告的渠道有哪些
  • 织梦后台做的网站怎么绑定域名谷歌推广代理商
  • 网站显示内容不显示网站怎么快速被百度收录
  • 制作app费用手机网站seo免费软件
  • 搜集10个优秀网站免费seo关键词优化方案
  • 日照外贸网站建设公司seo优
  • 怎么搭建自己的网页青岛seo博客