@RequestMapping注解
@RequestMapping源码解析
@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}):可以用在类和方法上
2.@AliasFor的意思是别名,value的别名是path,path的别名是value,所以value和path指的是同一个东西,请求路径,一个@RequestMapping可以拥有多个value
3.method表示请求方式,post,get,delete,put等,一个@RequestMapping可以指定多个请求方式
4.params表示请求参数,有特定的表达式,一个@RequestMapping可以具有多个参数,拥有四个表达式,其中pass!=1表示参数pass不能为1,!unParam表示参数中不能存在unParam参数名,age=3表示参数age必须为3
5.headers表示请求头,有特定的表达式,和第四点一样。🐠如果不满足headers,页面会报404错误。
@RequestMapping(value={"/test","/test2"},
method = {RequestMethod.POST,RequestMethod.GET},
params={"user","pass!=1","!unParam","age=3"},
headers={"head1","head2!=1","!head3","head4=4"},
produces = "application/json;charset=UTF-8")
public String test(){
return "good";
}
其他
consumes: 指定请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回值类型,不但可以设置返回值类型还可以设定返回值的字符编码;