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

服务网站备案网站提交收录入口

服务网站备案,网站提交收录入口,深圳龙华建设发展公司,WordPress实现评论表情文章目录 什么是FilterRegistrationBean举个栗子但是如果我想要排除某些uri方法总结FilterRegistrationBean只能设置指定的url进行过滤,而不能指定排除uri,只能使用OncePerRequestFilter的shouldNotFilter方法,排除uri 什么是FilterRegistrationBean FilterRegistrationBean是…

文章目录

    • 什么是FilterRegistrationBean
    • 举个栗子
    • 但是如果我想要排除某些uri
    • 方法
    • 总结FilterRegistrationBean只能设置指定的url进行过滤,而不能指定排除uri,只能使用OncePerRequestFilter的shouldNotFilter方法,排除uri

什么是FilterRegistrationBean

FilterRegistrationBean是Spring框架中的一个重要组件,它的作用是注册和管理过滤器。在Web应用程序中,过滤器是用于拦截HTTP请求和响应的组件。FilterRegistrationBean可以通过Java代码配置,也可以通过XML配置文件进行配置。

FilterRegistrationBean的工作原理是在Spring应用程序启动时,自动扫描并注册所有配置的过滤器。这些过滤器可以拦截HTTP请求和响应,并执行一些预定义的操作。例如,过滤器可以检查请求参数、修改请求头、记录请求日志等。

FilterRegistrationBean的使用非常灵活,可以根据具体的需求进行配置。例如,可以指定过滤器的名称、URL模式、执行顺序等。

举个栗子

上篇文章针对全局日志的文章https://blog.51cto.com/u_16174475/7335078
针对全局的日志traceId处理,就使用了FilterRegistrationBean注册LogFilter

package com.study.springbootplus.config;import com.study.springbootplus.utils.ThreadMdcUtil;
import org.slf4j.MDC;
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 LogFilter extends OncePerRequestFilter {@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {ThreadMdcUtil.setTraceIdIfAbsent();try {filterChain.doFilter(request, response);} finally {response.addHeader(ThreadMdcUtil.TRACE_ID, MDC.get(ThreadMdcUtil.TRACE_ID));ThreadMdcUtil.remove();}}
}
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Beanpublic FilterRegistrationBean logFilter() {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();filterRegistrationBean.setFilter(new LogFilter());filterRegistrationBean.setOrder(Integer.MIN_VALUE);return filterRegistrationBean;}

FilterRegistrationBean还支持许多其他属性。例如,可以指定过滤器的初始化参数、异步支持、servlet名称等。以下是一些常用的属性:

  • filter:指定要注册的过滤器实例。
  • urlPatterns:指定过滤器要拦截的URL模式。
  • name:指定过滤器的名称。
  • order:指定过滤器的执行顺序。
  • initParameters:指定过滤器的初始化参数。
  • asyncSupported:指定是否支持异步操作。
  • servletNames:指定要拦截的Servlet名称。

但是如果我想要排除某些uri

有些filter想要排除部分uri,使用FilterRegistrationBean 该怎么操作呢?
FilterRegistrationBean 里面的方法比如addUrlPatterns,只能用来指定uri,并没有其他方法来进行过滤uri,所以只能在继承OncePerRequestFilter的LogFilter里面实现

方法

OncePerRequestFilter有个shouldNotFilter方法,用来排除uri,如果需要排除的uri是固定的话就只需要在方法里面加上排除的uri:

   @Overrideprotected boolean shouldNotFilter(HttpServletRequest request) {String requestURI = request.getRequestURI();return requestURI.startsWith("/actuator")|| requestURI.startsWith("/captcha");}

如果是多个项目使用,不同项目需要指定不同url,那就可以在LogFilter定义一个List,然后在初始化的时候set需要过滤的uri就可以:

package com.study.springbootplus.config;import com.google.common.collect.Lists;
import com.study.springbootplus.utils.ThreadMdcUtil;
import org.slf4j.MDC;
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;
import java.util.List;public class LogFilter extends OncePerRequestFilter {private static List<String> excludes = Lists.newArrayList();public static void setExcludes(List<String> excludes) {LogFilter.excludes = excludes;}@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {ThreadMdcUtil.setTraceIdIfAbsent();try {filterChain.doFilter(request, response);} finally {response.addHeader(ThreadMdcUtil.TRACE_ID, MDC.get(ThreadMdcUtil.TRACE_ID));ThreadMdcUtil.remove();}}@Overrideprotected boolean shouldNotFilter(HttpServletRequest request) {return excludes.contains(request.getRequestURI());}
}

在使用的地方:

    @Beanpublic FilterRegistrationBean logFilter() {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();LogFilter logFilter = new LogFilter();logFilter.setExcludes(Lists.newArrayList("/aaa", "/bb"));filterRegistrationBean.setFilter(logFilter);filterRegistrationBean.setOrder(Integer.MIN_VALUE);return filterRegistrationBean;}

总结FilterRegistrationBean只能设置指定的url进行过滤,而不能指定排除uri,只能使用OncePerRequestFilter的shouldNotFilter方法,排除uri

http://www.ritt.cn/news/5102.html

相关文章:

  • 做php网站前端价格网络公关公司联系方式
  • 广东建数网络科技有限公司百度广告优化
  • 专业做网站的公司有没有服务器潍坊今日头条新闻
  • 网站换服务器要怎么做公司做网站需要多少钱
  • 网站建设销售提成个人怎么接外贸订单
  • 安徽工程信息网官网首页seo网站结构优化
  • 有偷菜餐厅城市建设的网站天津百度快速优化排名
  • 南阳网站建设8iwang最有效的免费推广方法
  • banner好网站关键词优化技巧有哪些
  • 虚拟机iis网站建设长沙网站seo哪家公司好
  • 具有口碑的柳州网站建设公司电销精准客户资源
  • 在wordpress上背景怎么调杭州网站优化企业
  • 做网站在阿里云买什么软件怎么自己做一个网址
  • 音乐盒的网站怎么做客户关系管理系统
  • 镇江网站建设 找思创兰州做网站的公司
  • 襄阳网站建设兼职设计网站用什么软件
  • 抚顺市住房和城乡建设委员会网站真正免费建站
  • wordpress取5篇置顶文章电子商务seo是什么意思
  • 滨江网站制作免费网站注册免费创建网站
  • php做的网站如何运行市场营销策划
  • 哪里有网站建设中心厦门网站快速排名优化
  • php网站开发源代码百度查一下
  • 成都网站建设cdxwcx市场营销课程
  • java语言网站开发百度推广要自己建站吗
  • 个人备案的网站 做企业站舆情监测系统
  • iis 网站权限西安网站推广助理
  • 温州网站制作推广百度收录网址
  • 一个主机域名可以做多少个网站一站式快速网站排名多少钱
  • 广州市公司网站建设企业论坛发帖
  • 空间服务 网站被黑北京全网营销推广公司