查询网站空间DW做的网站怎么弄兼容性

张小明 2026/1/9 17:19:28
查询网站空间,DW做的网站怎么弄兼容性,品牌建设 凝心,哔哩哔哩网页版登录入口目录 一、核心基础#xff1a;AntPathMatcher 规则与核心 API 1. 核心匹配规则#xff08;必记#xff09; 2. Spring Boot 中获取 AntPathMatcher 实例 3. 核心 API#xff08;过滤器场景高频使用#xff09; 二、核心实战#xff1a;Spring Boot 过滤器中用 AntPa…目录一、核心基础AntPathMatcher 规则与核心 API1. 核心匹配规则必记2. Spring Boot 中获取 AntPathMatcher 实例3. 核心 API过滤器场景高频使用二、核心实战Spring Boot 过滤器中用 AntPathMatcher 拦截请求路径前置知识Spring Boot 注册过滤器的两种方式场景 1基础过滤器拦截指定路径放行排除路径步骤 1编写过滤器核心AntPathMatcher 匹配路径步骤 2启动类开启 Servlet 组件扫描场景 2通用路径匹配过滤器可配置复用性高步骤 1配置文件application.yml定义路径规则步骤 2编写通用过滤器注入配置 AntPathMatcher步骤 3通过 FilterRegistrationBean 注册过滤器指定优先级三、Spring Boot 中 AntPathMatcher 高级配置1. 自定义匹配规则2. 与 Spring MVC 结合路径变量提取3. 与 Spring Security 结合权限路径匹配四、常见问题与避坑指南1. 路径匹配过宽 / 过窄2. 末尾斜杠导致匹配失败3. 大小写敏感问题4. 过滤器注册优先级问题5. 与 PathPattern 混用Spring Boot 5.3五、总结AntPathMatcher是 Spring 核心的路径匹配工具在 Spring Boot 中被深度集成尤其在过滤器 / 拦截器拦截请求路径、Spring MVC 路由、Spring Security 权限控制等场景中是核心依赖。本文从基础规则、核心 API、过滤器实战、高级用法到避坑指南全面讲解其在 Spring Boot 中的应用重点聚焦「过滤器拦截请求路径」场景。一、核心基础AntPathMatcher 规则与核心 API1. 核心匹配规则必记AntPathMatcher 基于 Ant 风格通配符是路径匹配的核心Spring Boot 中所有路径匹配场景过滤器、拦截器、Security均遵循此规则通配符含义示例匹配 / 不匹配?匹配单个任意字符不含//user/?匹配/user/1、/user/a不匹配/user/12、/user/a/b*匹配任意多个字符不含//user/*匹配/user/123、/user/abc不匹配/user/12/34**匹配任意多层路径含//user/**匹配/user/1、/user/1/2/3、/user/a/b不匹配无除非限定前缀{变量名[:正则]}路径变量Spring 扩展/user/{id:\d}匹配/user/123提取 id123不匹配/user/abc无通配符精确匹配/user/list仅匹配/user/list不匹配/user/list/1、/user/list22. Spring Boot 中获取 AntPathMatcher 实例Spring Boot 自动配置了AntPathMatcher单例可直接注入或通过静态方法获取java运行import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.AntPathMatcher; import org.springframework.web.bind.annotation.RestController; RestController public class DemoController { // 方式1直接注入推荐Spring 容器管理 Autowired private AntPathMatcher antPathMatcher; // 方式2静态获取手动创建适用于非 Spring 管理的类 private static final AntPathMatcher MATCHER new AntPathMatcher(); }3. 核心 API过滤器场景高频使用方法作用示例match(String pattern, String path)判断路径是否匹配表达式matcher.match(/user/**, /user/1/2)→truematchStart(String pattern, String path)判断路径是否匹配表达式前缀matcher.matchStart(/user/*, /user/1/2)→trueextractUriTemplateVariables(String pattern, String path)提取路径变量matcher.extractUriTemplateVariables(/user/{id}, /user/123)→{id:123}combine(String pattern1, String pattern2)拼接路径表达式matcher.combine(/user/{id}, order/{oid})→/user/{id}/order/{oid}二、核心实战Spring Boot 过滤器中用 AntPathMatcher 拦截请求路径在 Spring Boot 中过滤器Filter用于全局拦截 HTTP 请求而AntPathMatcher是实现「按路径规则拦截 / 放行」的核心工具。以下分「基础过滤器」「通用路径匹配过滤器」两个场景讲解覆盖 90% 实际开发需求。前置知识Spring Boot 注册过滤器的两种方式Spring Boot 中注册 Filter 有两种核心方式均支持结合 AntPathMatcher 使用方式 1通过WebFilter ServletComponentScan简单适合单个过滤器方式 2通过Bean注册FilterRegistrationBean灵活支持排序、路径优先级。场景 1基础过滤器拦截指定路径放行排除路径需求实现一个日志过滤器拦截所有/api/**路径的请求放行/api/public/**和/api/login路径。步骤 1编写过滤器核心AntPathMatcher 匹配路径java运行import org.springframework.stereotype.Component; import org.springframework.util.AntPathMatcher; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import java.io.IOException; // 方式1WebFilter 注册需配合启动类 ServletComponentScan WebFilter(filterName LogFilter, urlPatterns /*) // 先拦截所有路径再内部匹配 Component public class LogFilter implements Filter { // 初始化 AntPathMatcherSpring 容器外可手动 new容器内建议注入 private final AntPathMatcher pathMatcher new AntPathMatcher(); // 定义需要拦截的路径表达式 private static final String[] INCLUDE_PATTERNS {/api/**}; // 定义需要放行的路径表达式 private static final String[] EXCLUDE_PATTERNS {/api/public/**, /api/login}; Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest (HttpServletRequest) request; String requestURI httpRequest.getRequestURI(); // 获取请求路径如 /api/user/123 // 1. 判断是否需要拦截匹配 INCLUDE 且不匹配 EXCLUDE boolean needIntercept false; // 检查是否在拦截列表中 for (String includePattern : INCLUDE_PATTERNS) { if (pathMatcher.match(includePattern, requestURI)) { needIntercept true; break; } } // 检查是否在放行列表中放行优先级更高 for (String excludePattern : EXCLUDE_PATTERNS) { if (pathMatcher.match(excludePattern, requestURI)) { needIntercept false; break; } } // 2. 拦截逻辑记录日志 if (needIntercept) { long startTime System.currentTimeMillis(); System.out.println(拦截请求 requestURI 方法 httpRequest.getMethod()); // 执行后续过滤器/控制器 chain.doFilter(request, response); long costTime System.currentTimeMillis() - startTime; System.out.println(请求完成 requestURI 耗时 costTime ms); } else { // 放行直接执行后续逻辑 chain.doFilter(request, response); } } }步骤 2启动类开启 Servlet 组件扫描java运行import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; SpringBootApplication ServletComponentScan // 扫描 WebFilter/WebServlet 等注解 public class BootAntPathApplication { public static void main(String[] args) { SpringApplication.run(BootAntPathApplication.class, args); } }场景 2通用路径匹配过滤器可配置复用性高需求封装一个通用的路径匹配过滤器支持通过配置文件自定义「拦截 / 放行路径」适用于鉴权、限流等通用场景。步骤 1配置文件application.yml定义路径规则yaml# 自定义过滤器配置 filter: auth: include-patterns: [/api/**, /admin/**] # 需要拦截的路径 exclude-patterns: [/api/public/**, /admin/login, /error] # 放行的路径步骤 2编写通用过滤器注入配置 AntPathMatcherjava运行import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.util.AntPathMatcher; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.Arrays; import java.util.List; Component public class AuthFilter implements Filter { // 注入 AntPathMatcherSpring Boot 自动配置的单例 private final AntPathMatcher antPathMatcher; // 从配置文件注入拦截/放行路径 Value(${filter.auth.include-patterns}) private ListString includePatterns; Value(${filter.auth.exclude-patterns}) private ListString excludePatterns; // 构造器注入 AntPathMatcher推荐依赖注入更规范 public AuthFilter(AntPathMatcher antPathMatcher) { this.antPathMatcher antPathMatcher; } Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest (HttpServletRequest) request; String requestURI httpRequest.getRequestURI(); // 通用路径匹配方法判断是否需要拦截 if (isNeedIntercept(requestURI)) { // 鉴权逻辑示例检查 Token String token httpRequest.getHeader(Token); if (token null || !token.equals(valid-token)) { response.setContentType(application/json;charsetUTF-8); response.getWriter().write({\code\:401,\msg\:\未授权\}); return; } } // 放行 chain.doFilter(request, response); } /** * 通用路径匹配逻辑匹配拦截列表 不匹配放行列表 */ private boolean isNeedIntercept(String requestURI) { // 1. 是否匹配拦截路径 boolean matchInclude includePatterns.stream() .anyMatch(pattern - antPathMatcher.match(pattern, requestURI)); if (!matchInclude) { return false; } // 2. 是否匹配放行路径放行优先级更高 boolean matchExclude excludePatterns.stream() .anyMatch(pattern - antPathMatcher.match(pattern, requestURI)); return !matchExclude; } }步骤 3通过 FilterRegistrationBean 注册过滤器指定优先级java运行import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.util.AntPathMatcher; Configuration public class FilterConfig { // 注册 AuthFilter指定拦截路径/* 表示所有路径内部通过 AntPathMatcher 细粒度匹配 Bean public FilterRegistrationBeanAuthFilter authFilterRegistration(AuthFilter authFilter) { FilterRegistrationBeanAuthFilter registration new FilterRegistrationBean(); registration.setFilter(authFilter); registration.addUrlPatterns(/*); // 先拦截所有内部匹配 registration.setOrder(1); // 优先级数字越小执行越早 registration.setName(authFilter); return registration; } // 手动注册 AntPathMatcher 单例Spring Boot 已默认注册可省略 Bean public AntPathMatcher antPathMatcher() { AntPathMatcher matcher new AntPathMatcher(); // 自定义配置忽略路径末尾斜杠如 /user 和 /user/ 视为同一路径 matcher.setUseTrailingSlashMatch(true); // 自定义配置关闭大小写敏感如 /User 和 /user 视为同一路径 matcher.setCaseSensitive(false); return matcher; } }三、Spring Boot 中 AntPathMatcher 高级配置1. 自定义匹配规则通过AntPathMatcher的 setter 方法自定义匹配行为适用于特殊场景java运行Bean public AntPathMatcher antPathMatcher() { AntPathMatcher matcher new AntPathMatcher(); // 1. 忽略末尾斜杠默认 true/user ≈ /user/ matcher.setUseTrailingSlashMatch(true); // 2. 关闭大小写敏感默认 false/User ≈ /user matcher.setCaseSensitive(false); // 3. 关闭后缀匹配默认 true/user 不匹配 /user.html matcher.setUseSuffixPatternMatch(false); // 4. 自定义路径分隔符默认 /适用于 Windows 路径如 \user\123 matcher.setPathSeparator(\\); return matcher; }2. 与 Spring MVC 结合路径变量提取在 Spring Boot Controller 中AntPathMatcher 自动用于路径变量提取结合过滤器可实现「路径变量校验」java运行import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; RestController RequestMapping(/api/user) public class UserController { // 路径表达式/api/user/{id:\d}仅匹配数字 id GetMapping(/{id:\\d}) public String getUser(PathVariable Long id) { return 用户ID id; } }过滤器中可提取路径变量java运行// 在过滤器中提取路径变量 String requestURI /api/user/123; String pattern /api/user/{id:\\d}; MapString, String variables antPathMatcher.extractUriTemplateVariables(pattern, requestURI); Long userId Long.parseLong(variables.get(id)); // 1233. 与 Spring Security 结合权限路径匹配Spring Security 的antMatchers()底层基于AntPathMatcher与过滤器规则一致java运行import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.web.SecurityFilterChain; Configuration public class SecurityConfig { Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth - auth // 放行 /api/public/** 路径Ant 规则 .antMatchers(/api/public/**).permitAll() // /admin/** 路径需要 ADMIN 角色Ant 规则 .antMatchers(/admin/**).hasRole(ADMIN) // /api/user/{id:\d} 路径需要 USER 角色带正则的 Ant 规则 .antMatchers(/api/user/{id:\\d}).hasRole(USER) // 其他路径需认证 .anyRequest().authenticated() ); return http.build(); } }四、常见问题与避坑指南1. 路径匹配过宽 / 过窄问题使用/**会匹配所有路径容易误拦截静态资源如/css/**、/js/**解决细化拦截规则如/api/**而非/**并在放行列表中添加静态资源路径/static/**、/css/**。2. 末尾斜杠导致匹配失败问题/user和/user/被判定为不同路径解决设置matcher.setUseTrailingSlashMatch(true)默认开启或统一请求路径格式。3. 大小写敏感问题问题Windows 系统下/User和/user实际是同一路径但 AntPathMatcher 默认区分大小写解决设置matcher.setCaseSensitive(false)关闭大小写敏感。4. 过滤器注册优先级问题问题多个过滤器执行顺序混乱导致鉴权过滤器在日志过滤器之后执行解决通过FilterRegistrationBean.setOrder()指定优先级数字越小执行越早。5. 与 PathPattern 混用Spring Boot 5.3问题Spring Boot 5.3 推荐使用PathPattern替代AntPathMatcher两者规则略有差异解决如需兼容旧代码继续使用AntPathMatcher新项目可切换到PathPattern通过PathPatternParser实现路径匹配java运行import org.springframework.web.util.pattern.PathPattern; import org.springframework.web.util.pattern.PathPatternParser; // PathPattern 示例 PathPatternParser parser new PathPatternParser(); PathPattern pattern parser.parse(/api/**); boolean match pattern.matches(PathContainer.parsePath(/api/user/123)); // true五、总结在 Spring Boot 中AntPathMatcher是「路径精细化控制」的核心工具尤其在过滤器拦截请求路径场景中通过 Ant 风格通配符可灵活实现「拦截 / 放行」规则核心用法过滤器中先拦截所有路径/*再通过match()方法结合 Ant 规则细粒度匹配最佳实践配置文件定义拦截 / 放行路径提高可维护性通过FilterRegistrationBean注册过滤器指定执行优先级自定义AntPathMatcher规则适配业务场景如忽略大小写、末尾斜杠避坑点避免路径匹配过宽、注意大小写 / 末尾斜杠、明确过滤器执行顺序。掌握AntPathMatcher能让 Spring Boot 过滤器、拦截器、Security 权限控制的路径规则更灵活是后端开发必备的核心技能。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站说服力 营销...wordpress微商城主题

TensorFlow 2.9 GPU 加速部署与多卡训练实战指南 在深度学习项目中,模型训练的效率往往直接决定了研发迭代的速度。面对动辄数小时甚至数天的训练周期,合理利用 GPU 资源已成为每个开发者必须掌握的技能。而 TensorFlow 作为工业界主流框架之一&#xf…

张小明 2026/1/6 16:41:30 网站建设

黄页推广软件网站邢台多地划为高风险区

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

张小明 2026/1/8 22:37:05 网站建设

国外比较好的资源网站wordpress 微信文章

第一章:医疗康复 Agent 的运动指导在现代康复医学中,智能 Agent 正逐渐成为个性化运动指导的核心工具。通过融合传感器数据、生物力学模型与机器学习算法,医疗康复 Agent 能够实时分析患者动作,并提供精准的运动纠正建议。感知与反…

张小明 2026/1/6 16:26:47 网站建设

个人可以做电影网站吗毕业设计网页设计论文

5G与6G网络架构、挑战及应用展望 1. 5G网络架构 5G网络架构存在多种选项,以下为您详细介绍: - 独立架构选项2 :在此架构中,控制平面和数据流量均通过5G节点承载,5G网络不依赖LTE网络,成为独立网络。核心网络包含AMF(接入和移动性功能),负责所有信令和控制功能;U…

张小明 2026/1/7 20:16:07 网站建设

南京高端网站建设公司做网站找人

FaceFusion在跨文化影视合作中的桥梁作用 在全球化内容创作日益深入的今天,一部电影、一档综艺或一个广告往往需要面向多个语言和文化市场同步发布。然而,当中国演员出演的剧集要在北美播出,或好莱坞角色需“说中文”登陆中国市场时&#xff…

张小明 2026/1/6 6:45:53 网站建设

做网站需要什么配置的电脑小程序商城代码

Qwen3-VL增强多模态推理能力:数学STEM题因果分析实测表现 在当前AI加速渗透教育、科研与工业设计的背景下,模型对复杂图文混合任务的理解能力正成为衡量其“智能水平”的关键标尺。尤其是在数学、物理等STEM领域,一道典型的压轴题往往融合了几…

张小明 2026/1/5 23:11:52 网站建设