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

智能建站模板网站免费申请空间

智能建站模板,网站免费申请空间,衡阳网站建设步骤,有限公司破产债务怎么办文章目录 什么是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 ListString excludes Lists.newArrayList();public static void setExcludes(ListString 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.w-s-a.com/news/438505/

相关文章:

  • 做网站的公司 贵阳郑州新像素ui设计培训收费
  • 温州网站建设公司电话给个免费的网址
  • 个人做电子商务网站备案软考高级
  • 淘宝客需要自己做网站吗四川遂宁做网站的公司
  • 编写网站策划书缘魁上海网站建设
  • 梧州外贸网站推广设计wordpress 上传 七牛
  • 增加网站备案千灯做网站
  • 深圳做网站的公php做简易网站
  • 徐州哪家做网站好商业空间设计效果图
  • 重庆建网站cqiezscom大学毕业做网站插画师好吗
  • 在门户网站做产品seo怎么样做网站管理员
  • 动画做视频在线观看网站字体安装+wordpress
  • vs2015网站开发做珠宝建个网站推广怎么样
  • 大桥外语官方网站星做宝贝佛山微信网站开发
  • 河南建设网站公司哪家好怎样做一家网站
  • 安阳市哪里做网站建设网站流量怎么赚钱
  • 网站开发与优化课程总结软件班级网站建设
  • py网站开发wordpress 公司网站 模板 下载
  • 长春城乡建设部网站首页英文网站推广服务
  • wordpress实训上海整站seo
  • 福建自己建设网站义乌市企推网络科技有限公司
  • 宁波优化网站哪家好织梦网站地图怎么做
  • 怎么在自己的网站加关键词烟台企业网站建设
  • 中山网站建设界面设计职业技能等级证书
  • 做网站首页多少钱免费版企业邮箱注册
  • ppp模式在网站建设的南昌专业做网站公司哪家好
  • 泰安网站建设制作电话号码百度sem竞价托管公司
  • 苏网站建设网页设计和网页美工
  • 跨境电商平台网站广州地铁站路线图
  • 吉林省交通建设集团有限公司网站企业网站推广的策略有哪些