ant风格

本文详细解析了Spring MVC中使用Ant风格路径匹配(*、?、**)的概念,展示了如何在@RequestMapping注解中应用,并通过实例说明了不同路径表达式的精确匹配优先级。

ant风格
​ 通过通配符匹配路径

​ *: 匹配任意字符 任意多个

​ ?:匹配任意字符 有且仅有一个

​ **:匹配任意路径

如果匹配到多个路径,谁更精确 ,进入谁的方法

@Controller
@RequestMapping("/user")
public class UserController {

    // ant风格
    // * 匹配任意字符 任意多个
    //? 匹配任意一个字符
    // ** 匹配任意路径
    //可以放路径的任何地方
    @RequestMapping("/user*")
    public String userAdd()
    {
        System.out.println("add..");
        return "success";
    }
    @RequestMapping("/userUpdate")
    public String userUpdate()
    {
        System.out.println("update..");
        return "success";
    }

    @RequestMapping("/**/userDelete") // user/aa/bb/userDelete
    public String userDelete()
    {
        System.out.println("delete..");
        return "success";
    }

    //匹配一个字符
    @RequestMapping("/userSelec?")
    public String userSelect()
    {
         System.out.println("select");

         return "success";
    }
    }

测试:

<a href="user/userAdd">添加</a>    //匹配的是user*

<a href="user/userUpdate">更新</a>  //匹配的是userUpdate 

<a href="user/aa/bb/userDelete">删除</a> //匹配的是/**/userDelete

<a href="user/userSelec9">查询</a> //匹配的是/userSelec?

<a href="user/userSelec99">查询2</a> //匹配的是user*
### Ant风格URL定义及匹配规则 Ant风格的URL定义是一种灵活的路径匹配方式,广泛应用于Spring框架中。它通过特定的通配符来实现对路径的模糊匹配,从而简化了开发者的操作并增强了系统的灵活性。 #### 1. 基本概念 Ant风格的路径匹配器(`AntPathMatcher`)基于Apache Ant的样式设计[^1]。它的主要特点是提供了三种常见的通配符用于路径匹配: | **通配符** | **描述** | |-------------|--------------------------------------------------------------------------| | `?` | 匹配任意单个字符。例如,`/file?.txt` 可以匹配 `/file1.txt` 或 `/fileA.txt`。[^2] | | `*` | 匹配零个或多个字符,但仅限于当前目录层次结构内的部分。例如,`/*.jpg` 可以匹配 `/image.jpg` 和 `/photo.jpg`,但无法跨越目录边界。[^3] | | `**` | 匹配零个或多个子目录及其下的文件。例如,`/**/index.html` 可以匹配 `/index.html`, `/subdir/index.html` 等跨多层次的路径。[^4] | #### 2. 使用示例 以下是几个典型的Ant风格路径匹配的例子以及其解释: - 路径模式:`/users/*/profile` - 解释:匹配形如 `/users/{any}/profile` 的路径,其中 `{any}` 表示任意长度的一个片段。 - 路径模式:`/files/**/*.pdf` - 解释:匹配根目录下所有 `.pdf` 文件,无论这些文件位于哪个子目录中。 - 路径模式:`/images/?_*.png` - 解释:匹配 `/images/` 下的所有 PNG 图片文件名,要求图片名称的第一个字符为字母或数字,后续可以跟其他字符。 ```java @Controller @RequestMapping("/example") public class ExampleController { @RequestMapping(value = "/users/*/profile", method = RequestMethod.GET) public String userProfile() { return "userProfile"; } @RequestMapping(value = "/files/**/*.pdf", method = RequestMethod.GET) public String fileDownload() { return "downloadPdf"; } } ``` #### 3. 应用场景 Ant风格的路径匹配主要用于处理分层清晰、具有一定规律性的资源定位需求。相比于正则表达式,它更适合用来匹配 URL 或者文件系统中的路径[^1]。具体应用场景如下: - Web应用中动态路由的设计; - 配置静态资源访问权限时指定允许范围; - 定义 RESTful API 接口地址模板。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值