SpringMVC 03 -SpringMVC中的常用注解

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

你可能感兴趣的:(Java,#,框架演进,java,servlet,spring)