SpringMVC_003_Ant风格

本文介绍了SpringMVC中Ant风格的请求路径匹配方式,包括问号(?)和星号(*)的使用。问号可以匹配任意单个字符,星号能匹配任意数量的字符。在控制器中,当存在类似路径时,系统可能会出现选择执行问题。此外,还提及了双星号(**)用于匹配多层目录的情况。最后提到了@PathVariable的参数传递,并预告了Restful风格的后续讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ant风格,为请求路径的一种匹配方式

通配符说明
匹配任意一个字符
*匹配任意字符(包括0个)
**匹配任意层路径(包括0个)

?匹配:

package com.ack.handler;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("ant")
public class AntStyleTest {
	private static final String SUCCESS = "success";
	
	@RequestMapping("a?t1")
	public String testAnt1(){
		System.out.println("-->>AntStyleTest/testAnt1");
		return SUCCESS;
	}
}

ant/a?t1中间的?可以替换为任意字符(或为空格)都可以;

*匹配:

package com.ack.handler;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("ant")
public class AntStyleTest {
	private static final String SUCCESS = "success";
	
	@RequestMapping("a*t2")
	public String testAnt2(){
		System.out.println("-->>AntStyleTest/testAnt2");
		return SUCCESS;
	}
}

ant/a*t2中间的*为任意个字符都可以访问;

这里说个有意思的现象,当我这里的@RequestMapping("a*t2")替换为@RequestMapping("a*t1"),跟@RequestMapping("a?t1")放在同一个Controller里面,那么ant/aXt1似乎就蒙圈,没法抉择执行哪个方法了,可实际是访问的是ant/a?t1(带?的那个方法,与两个方法的先后次序无关),阅读源码时可以去了解下;

*可以匹配任意个字符,那么作为目录也是可以的

package com.ack.handler;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("ant")
public class AntStyleTest {
	private static final String SUCCESS = "success";
	
	@RequestMapping("/*/ant3")
	public String testAnt3(){
		System.out.println("-->>AntStyleTest/testAnt3");
		return SUCCESS;
	}
}

*有着强大的强大匹配作用,可以如果是多层目录就无法起作用了,于是有了**(两个星号)

**匹配:

package com.ack.handler;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("ant")
public class AntStyleTest {
	private static final String SUCCESS = "success";
	
	@RequestMapping("**/ant4")
	public String testAnt4(){
		System.out.println("-->>AntStyleTest/testAnt4");
		return SUCCESS;
	}
}

ant和ant4之间可以加任意层目录,当然ant4作为ant的直接子目录也是可以的;

@PathVariable通过参数传值在上一篇博文已讲过,可以去看里面的简单例子:http://blog.youkuaiyun.com/qinshijangshan/article/details/53152350

Rest风格后面再讲;








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值