@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping
查看RequestMapping源码会发现@Target({ElementType.METHOD, ElementType.TYPE})说明RequestMapping可以用于方法以及类声明上,在类上注明RequestMapping后,访问类中方法时需加上类的RequestMapping地址。例如
@RequestMapping("/test")
@Controller
public class TypeMappingTest {
@RequestMapping("/testReauestMapping")
public String testReauestMapping() {
System.out.println("testReauestMapping");
return "success";
}
}
需要访问testReauestMapping方法时就不能时使用testReauestMapping路径了,而需使用test/testReauestMapping
参数名 | 所对应内容 |
---|---|
value | 请求URL |
methd | 请求方法 |
params | 请求参数 |
heads | 请求头 |
在映射时它们彼此是与的关系,联合多个条件可以使请求更加精确。
@RequestMapping(value = "/testParas", method = RequestMethod.POST)
例如上面的请求就指定了必须是post的请求才会响应,此时如果使用get访问,则会报405错误。
格式 | 说明 |
---|---|
param1 | 表示请求必须包含param1的请求参数 |
!param1 | 表示请求必须不能包含param1的请求参数 |
param1!=value1 | 表示请求包含名为param1的参数,但其值不能为value1 |
{“param1=value1”,”param2”} | 请求必须包含名为param1和param2的两个请求参数,且param1的值必须为value1 |
@RequestMapping支持符合Ant规则的通配符
通配符 | 说明 | 示例 |
---|---|---|
? | 匹配一个任意字符 | /a/?b 可以匹配/a/ab;/a/cb。但不能匹配/a/acb之类 |
* | 匹配任意长度的字符 | /a/ *b可以匹配/a/cb;/a/acb。但不能匹配/a/cb/vb |
** | 匹配多层路径 | 可以匹配/a/ab;/a/acb;/a/ab/abc/…/… |