Spring5.3 之后加入了更多的请求路径匹配的实现策略;

以前只支持 AntPathMatcher 策略, 现在提供了 PathPatternParser 策略。并且可以让我们指定到底使用那种策略。

1. Ant风格路径用法

Ant 风格的路径模式语法具有以下规则:

  • *:表示任意数量的字符。
  • ?:表示任意一个字符。
  • **:表示任意数量的目录。
  • {}:表示一个命名的模式占位符。
  • []:表示字符集合,例如[a-z]表示小写字母。

例如:

  • *.html 匹配任意名称,扩展名为.html的文件。
  • /folder1/*/*.java 匹配在folder1目录下的任意两级目录下的.java文件。
  • /folder2/**/*.jsp 匹配在folder2目录下任意目录深度的.jsp文件。
  • /{type}/{id}.html 匹配任意文件名为{id}.html,在任意命名的{type}目录下的文件。

注意:Ant 风格的路径模式语法中的特殊字符需要转义,如:

  • 要匹配文件路径中的星号,则需要转义为\\*
  • 要匹配文件路径中的问号,则需要转义为\\?

2. 模式切换

AntPathMatcherPathPatternParser

  • PathPatternParser 在 jmh 基准测试下,有 6~8 倍吞吐量提升,降低 30%~40%空间分配率
  • PathPatternParser 兼容 AntPathMatcher语法,并支持更多类型的路径模式
  • PathPatternParser "**" 多段匹配的支持仅允许在模式末尾使用
@Slf4j
@RestController
public class HelloController { @GetMapping("/a*/b?/{p1:[a-f]+}")
public String hello(HttpServletRequest request,
@PathVariable("p1") String path) { log.info("路径变量p1: {}", path);
//获取请求路径
String uri = request.getRequestURI();
return uri;
}
}

总结:

  • 使用默认的路径匹配规则,是由 PathPatternParser 提供的
  • 如果路径中间需要有 **,替换成ant风格路径
# 改变路径匹配策略:
# ant_path_matcher 老版策略;
# path_pattern_parser 新版策略;
spring.mvc.pathmatch.matching-strategy=ant_path_matcher

SpringBoot路径匹配的更多相关文章

  1. SpringMVC常用注解,返回方式,路径匹配形式,验证

    常用注解元素 @Controller 标注在Bean的类定义处 @RequestMapping 真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping ...

  2. Struts 之 通配符 路径匹配 常量用法 配置默认值

    Struts 框架学习 Action的开发的几种方式 方式1 : 继承ActionSupport     如果使用Struts校验功能,必须继承此类 方式2 : 实现Action接口 方式3 :不继承 ...

  3. 【Spring】15、spring mvc路径匹配原则

    Ant path 匹配原则 在Spring MVC中经常要用到拦截器,在配置需要要拦截的路径时经常用到<mvc:mapping/>子标签,其有一个path属性,它就是用来指定需要拦截的路径 ...

  4. servlet路径映射中的完全路径匹配、目录匹配、扩展名匹配

    在servlet路径映射中,关于url-pattern的配置有三种,分别是完全路径匹配.目录匹配.扩展名匹配 其优先级分别为:完全路径匹配>目录匹配>扩展名匹配: 一.三种路径印射的区别 ...

  5. SpringMVC路径匹配规则AntPathMatcher

    前言 本文是基于Spring Framework 4.3.3分析. 正文 SpringMVC的路径匹配规则是依照Ant的来的. 实际上不只是SpringMVC,整个Spring框架的路径解析都是按照A ...

  6. Spring MVC的路径匹配

    Spring MVC中的路径匹配比起标准web.xml的servlet映射要灵活得多.路径匹配的默认策略是由org.springframework.util.AntPathMatcher实现的.顾名思 ...

  7. nginx 静态目录配置规则,路径匹配与本地资源

    经常配了nginx静态目录,死活访问不了,每次访问404.查看文档后,发现nginx配置静态目录使 用以下规则 假如nginx是在本机,静态目录也是在本机, 1.子目录匹配 如下配置 location ...

  8. Srping MVC ant路径匹配

    背景 最近有一个功能设计path匹配,开发说支持ant匹配,这是我第一次听说这个词,赶紧补一下功课. Ant匹配规则 1.前言 (1)SpringMVC的路径匹配规则是按照Ant来的,实际上不只是Sp ...

  9. spring mvc路径匹配原则

    Ant path 匹配原则 在Spring MVC中经常要用到拦截器,在配置需要要拦截的路径时经常用到<mvc:mapping/>子标签,其有一个path属性,它就是用来指定需要拦截的路径 ...

  10. Nginx 实践:location 路径匹配

    1. 目标 nginx 反向代理,路径映射的过程是什么?如何配置路径映射规则? 2.location 路径匹配 2.1 匹配规则: location 路径正则匹配: 符号 说明 ~ 正则匹配,区分大小 ...

随机推荐

  1. Hetao P2071 打字游戏 题解 [ 绿 ] [ 最小生成树 ] [ 动态规划 ] [ 编辑距离 ]

    打字游戏:MST 套 dp 好题. 首先看这个数据范围,\(O(n^4)\) 把每两个字符串之前的编辑距离求一下很显然吧. 然后我们观察一下每一个 node 的性质,发现他要么自己打完,要么从别人那里 ...

  2. 《Vue2 框架入门第一课:基础概念与环境搭建》

    前端宇宙的新钥匙 --Vue2 在前端开发的广袤宇宙中,Vue2 框架宛如一把闪耀的钥匙,为开发者们开启了一扇通往高效.灵活构建用户界面的大门.随着互联网技术的飞速发展,前端开发的复杂性与日俱增,对开 ...

  3. AI如何改变数据驱动决策的方式

    导语 在这个信息爆炸的时代,数据成为了企业和组织最为宝贵的资源.然而,单纯的数据堆积并没有太大价值,只有通过分析和挖掘,才能真正发挥数据的潜力.随着AI技术的飞速发展,我们正见证着数据驱动决策方式发生 ...

  4. Vulnhub-DC-9靶机-SQL注入拿到账户+利用端口敲门连接ssh+信息泄露利用root脚本追加提权

    一.环境搭建 选择扫描虚拟机 选择靶机路径 如果出现以下信息 如下修改,修改和虚拟机一样的版本 二.信息收集 扫ip nmap -sn 192.168.108.0/24 得到靶机ip:192.168. ...

  5. Vulnhub-election靶机

    总结:本靶机给了很多目录,对于信息收集考察的比较严格,给了一个数据库,很多时候容易陷进去,拿到用户权限登录后,也需要大量的信息收集,虽然可以在数据库里找到root和密码,但是不是靶机本身的,最终利用s ...

  6. Qt解析JSON

    Qt解析JSON 文章目录 Qt解析JSON QT 解析json的三件套,QJsonDocument.QJsonObject.QJsonArray.QJsonValue JSON主要格式 QT的JSO ...

  7. ubuntu install 下载安装包报错 subprocess installed post-installation script returned error exit status 10

    前言 在 ubuntu 环境下使用 sudo apt-get install 安装软件包时,会报错 XXX 为安装软件包 dpkg:error processing package XXX (--co ...

  8. 【docker】如何将服务器加入集群,成为子节点

    需求:将服务器加入集群,成为集群中的图一.png (18.95 KB, 下载次数: 0) 图一 图二.png (10.92 KB, 下载次数: 0) 图二 图三.png (26.71 KB, 下载次数 ...

  9. 元模型对AI的哲学意义:让机器真正"懂"世界

    元模型对AI的哲学意义:让机器真正"懂"世界 (用日常语言和比喻解释) 1. 传统AI像"死记硬背的学生" 问题:现在的ChatGPT就像背了无数词典的人,能对 ...

  10. 【Web】支持纯静态的Layuimini版本

    支持纯静态的Layuimini版本 本人做了点小小的改动,在来的基础上添加了对静态的支持. 零.起因 要做个项目,但是用的是JSP,想着用Layui,然后去找模板,发现这个Layuimini.但是这个 ...