SpringMVC 03 -SpringMVC中的常用注解

文章详细介绍了SpringMVC中几个关键的注解用法,包括@RequestMapping用于处理请求映射,@RequestParam用于获取请求参数,@PathVariable用于获取URL路径变量,以及@ModelAttribute、@RequestHeader和@CookieValue在处理请求时的作用。
摘要由CSDN通过智能技术生成

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";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yinying293

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值