SpringMVC中的常用注解
1 RequestMapping源码
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
@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 {};
}
2 @RequestMapping
表示请求的映射路径
- @RequestMapping注解:用于匹配前端访问路径
- value:路径(必填)
- method:接受的请求方式(默认支持所有的请求方式)
- params:表示请求参数(必传,不传报错)
- headers:表示前端传递的请求头信息
- consumes:表示客户端提交数据的MIME类型 ext/html application/json
- produces:表示服务端响应的MIME类型
@RequestMapping(value = {"/test01","/test001"},
method= RequestMethod.POST,params={"name","age"})
public String test01(String name,int age){
System.out.println(name);
System.out.println(age);
return "hello";
}
该注解可以添加在类上。可以用于窄化请求
@RequestMapping(“/user”) //窄化请求路径,表示在每一个映射路径的前面添加了此路径
那么以后请求该类中的方法,都需要添加 /user
3 @RequestParam
- @RequestParam示处理请求的参数
- value: 当请求参数与接收的参数不一致,通过value指定
- required:是否设置为必填参数。(默认为true)
- defaultValue:参数的默认值(在没有传递参数的时候生效)
@RequestMapping("/test02")
public String test02(@RequestParam(value = "username",required=true,defaultValue="cxk")
String name){
System.out.println(name);
return "hello";
}
4 @PathVariable
@PathVariable:获取路径上的参数值
如果只有一个id并且相同,那么不用写 即
public String test03(@PathVariable ){}
比如 https://blog.csdn.net/yinying293/article/details/130037325?spm=1001.2014.3001.5502
/**
* /test03/{id}
* @PathVariable("id") int id
*/
@RequestMapping("test3/{tid}/{uid}") //子分类
public String test03(@PathVariable Integer tid, @PathVariable Integer uid){
System.out.println(tid);
System.out.println(uid);
return "hello";
}
5 @ModelAttribute【了解】
@ModelAttribute 在所有当前Controller的请求方法之前执行
@ModelAttribute // /user
public User test04(User user){ //传入user对象的时候属性值并不全
System.out.println("执行了吗?");
//假设, 根据用户名查询数据库返回user对象
user.setName("aaa");
user.setAge(30);
user.setMoney(1000d);
return user;
}
该注解在执行其他方法之前先执行,可以先利用接收到的参数,去查询数据库,拿到完整的数据,然后通过方法的返回值再传递到其他的请求方法上
6 @RequestHeader【了解】
@RequestHeader 获取请求头中的内容
- 相当于 request.getHeader(“key")
@RequestMapping("test06")
public String test06(@RequestHeader("User-Agent") String header){
System.out.println(header);
return "hello";
}
7 @CookieValue【了解】
@CookieValue 用于获取Cookie中的值
- 相当于request.getCookies();然后进行遍历,获取指定key对应的value
@RequestMapping("test07")
public String test07(@CookieValue("JSESSIONID") String cookieValue){
System.out.println(cookieValue);
return "hello";
}