Ant 风格的路径模式和 MVC 风格的路径模式 是什么

Ant 风格的路径模式和 MVC 风格的路径模式是 Spring 框架中用于匹配 URL 路径的两种模式。它们各有不同的语法和用途,主要用于配置 Spring Security 和 Spring MVC 中的请求映射。

Ant 风格的路径模式

Ant 风格的路径模式使用 Ant 文件路径匹配语法来匹配 URL。常见的模式符号包括:

  • *:匹配任意数量的字符(不包括路径分隔符 /)。
    • 例如:/user/* 可以匹配 /user/1/user/abc,但不匹配 /user/profile/1
  • **:匹配任意数量的字符(包括路径分隔符 /)。
    • 例如:/user/** 可以匹配 /user/1/user/profile/1/user/profile/settings
  • ?:匹配一个字符。
    • 例如:/user/?? 可以匹配 /user/ab/user/12,但不匹配 /user/a/user/abc

在 Spring Security 中,antMatchers 方法用于指定使用 Ant 风格的路径模式。例如:

java 复制代码
http
    .authorizeRequests()
    .antMatchers("/public/**").permitAll() // 允许所有对 /public/ 及其子路径的访问
    .antMatchers("/admin/*").hasRole("ADMIN") // 只允许具有 ADMIN 角色的用户访问 /admin/ 下的一层路径
    .anyRequest().authenticated(); // 其他所有请求都需要进行身份验证

MVC 风格的路径模式

MVC 风格的路径模式使用 Spring MVC 的路径匹配语法来匹配 URL。它通常用于 Spring MVC 控制器的请求映射。常见的模式符号包括:

  • {}:用于路径变量,占位符可以匹配任意路径段。
    • 例如:/user/{id} 可以匹配 /user/1/user/abc,路径变量 id 的值分别为 1abc
  • *:匹配任意数量的字符(不包括路径分隔符 /)。
    • 例如:/user/* 可以匹配 /user/1/user/abc,但不匹配 /user/profile/1
  • **:匹配任意数量的字符(包括路径分隔符 /)。
    • 例如:/user/** 可以匹配 /user/1/user/profile/1/user/profile/settings

在 Spring Security 中,mvcMatchers 方法用于指定使用 MVC 风格的路径模式。例如:

java 复制代码
http
    .authorizeRequests()
    .mvcMatchers("/user/{id}").hasRole("USER") // 只允许具有 USER 角色的用户访问 /user/ 下的路径,并匹配路径变量 {id}
    .mvcMatchers("/public/**").permitAll() // 允许所有对 /public/ 及其子路径的访问
    .anyRequest().authenticated(); // 其他所有请求都需要进行身份验证

总结

  • Ant 风格的路径模式 :使用 ***? 等符号来匹配 URL 路径,主要用于文件路径匹配。
  • MVC 风格的路径模式 :使用 {} 占位符来匹配路径变量,适用于 Spring MVC 控制器的请求映射。

选择使用哪种模式取决于具体的应用场景和需求。对于需要匹配复杂 URL 模式的场景,MVC 风格的路径模式更为灵活和强大。

相关推荐
6190083361 分钟前
linux 安装jdk
java·linux·运维
懂得节能嘛.4 分钟前
【动态配置中心】Java+Redis构建动态配置中心
java·开发语言·redis
专注于大数据技术栈5 分钟前
Java中JDK、JRE、JVM概念
java·开发语言·jvm
YuanlongWang9 分钟前
C# 基础——值类型与引用类型的本质区别
java·jvm·c#
Kay_Liang33 分钟前
大语言模型如何精准调用函数—— Function Calling 系统笔记
java·大数据·spring boot·笔记·ai·langchain·tools
自由的疯1 小时前
Java 如何学习Docker
java·后端·架构
自由的疯1 小时前
Java Docker本地部署
java·后端·架构
007php0071 小时前
猿辅导Java面试真实经历与深度总结(二)
java·开发语言·python·计算机网络·面试·职场和发展·golang
摇滚侠1 小时前
Spring Boot 3零基础教程,WEB 开发 内容协商机制 笔记34
java·spring boot·笔记·缓存
一勺菠萝丶1 小时前
在 macOS 上用 Docker 为 Java 后端 & 常见开发需求搭建完整服务(详尽教程)
java·macos·docker