@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
String name() default "";
@AliasFor("path")
String[] value() default {};
@AliasFor("value")
String[] path() default {};
RequestMethod[] method() default {};
String[] params() default {};
String[] headers() default {};
String[] consumes() default {};
String[] produces() default {};
}
1.@Target({ElementType.TYPE,ElementType.METHOD})
表示当前注解@RequestMapping能够使用在类上和方法上
2.String[]类型的value属性和RequestMethod[]类型的method属性
@RequestMapping( value = {"/value1","/value2"}, method={RequestMethod.GET,RequestMethod.POST} ) public String toSuccess(){ return "success"; }
补充:RequestMethod为一个枚举类
如果不设置method属性,则不以请求方式为条件,也就是说任意的请求方式都可以
public enum RequestMethod { GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,TRACE; private RequestMethod() { } }
3.SpringMVC提供了RequestMapping注解的派生注解
- 处理GET请求的映射--->GetMapping
- 处理POST请求的映射--->PostMapping
- 处理PUT请求的映射--->PutMapping
- 处理DELETE请求的映射--->DeleteMapping
4.重用的请求有get,post,put,delete
- 但是浏览器只支持get和post请求,若在form表单提交时,为method设置了其他请求方式的字符串(put或delete),则按照默认的请求方式get处理
<form th:action="@{/putMapping}" method="put">
<input type="submit" value="测试PutMapping注解--->putMapping">
</form>
- 这里form表单的method=“put”是无效的,因为浏览器只支持get,post请求,只要不是post请求,一律视为get请求
- 若要发送put和delete请求,则需要通过spring提供的过滤器HiddenHttpMethodFilter