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";}