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风格后面再讲;