SpringMVC中的常用注解
- 1 RequestMapping源码
- 2 @RequestMapping
- 3 @RequestParam
- 4 @PathVariable
- 5 @ModelAttribute【了解】
- 6 @RequestHeader【了解】
- 7 @CookieValue【了解】
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@Mappingpublic @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 // /userpublic 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";}