Spring WEB请求的参数处理与基本注解

Spring WEB请求的参数处理与基本注解

注解:

@PathVariable 获取请求路径参数

// 使用变量定义请求路径中的值,必须是GET请求
@GetMapping("/car/{id}/{username}")
public Map<String, Object> car(@PathVariable("id")  String id,
                               @PathVariable("username") String username,
                               // PathVariable的注解中标明,如果参数是map,也可以用map来接收参数,
                               // spring会把请求路径中的变量name和value构建到map中,但map必须是<String, String>
                               @PathVariable Map<String, String> pv){
    Map<String, Object> map =  new HashMap<>();
    map.put("id", id);
    map.put("username", username);
    map.put("pv", pv);
    return map;
}

在页面中请求http://localhost:8080/car/1/zhangsan,后端接口中即可获得id和username对应的值。

{"pv":{"id":"1","username":"zhangsan"},"id":"1","username":"zhangsan"}

@RequestHeader 获取请求头信息

@GetMapping("/car/{id}/{username}")
public Map<String, Object> car(@PathVariable("id")  String id,
                               @PathVariable("username") String username,
                               @PathVariable Map<String, String> pv,
                               // 获取请求头中的Cookie
                               @RequestHeader("Cookie") String cookie,
                               // 获取所有请求头信息
                               @RequestHeader Map<String, String> headers){
    Map<String, Object> map =  new HashMap<>();
    map.put("cookie", cookie);
    map.put("headers", headers);
    return map;
}

在页面中请求http://localhost:8080/car/1/zhangsan,后端接口中即可获得对应的值。
在这里插入图片描述

@RequestParam 获取请求参数

// @RequestParam获取的是 & 分割的参数值
@GetMapping("/car")
public Map<String, Object> car(@RequestParam("age") String age,
                               // 也可以是列表,就是表单中的多选框
                               @RequestParam("interests") List<String> interests,
                               // 和其他注解一样,如果没有明确指定某个参数,可以用map接收
                               @RequestParam Map<String, String> params){
    Map<String, Object> map =  new HashMap<>();
    map.put("age", age);
    map.put("interests", interests);
    map.put("params", params);
    return map;
}

在页面中请求http://localhost:8080/car?age=18&interests=game&interests=sing,后端接口中即可获得对应的值。
在这里插入图片描述

如果前端发送的是 post 请求,并且表单传输,也就是说请求头 Content-Type 的值是 application/x-www-form-urlencoded,这种情况也可以用 @RequestParam 获取值,
如果前端是 json 传值,就需要用 @RequestBody 取值

@CookieValue 获取Cookie数据

@GetMapping("/car")
public Map<String, Object> car(@CookieValue("Idea-6ca6da27") String Idea_6ca6da27,
                               // 获取cookie所有值
                               @CookieValue Cookie cookie){
    Map<String, Object> map =  new HashMap<>();
    map.put("Idea_6ca6da27", Idea_6ca6da27);
    map.put("cookie", cookie);
    return map;
}

RequestBody 获取表单参数

// 表单使用POST请求
@PostMapping("/car")                 // 获取表单提交内容,因为提交的是一个json串,所以可以用String接收
public Map<String, Object> postMethod(@RequestBody String content){
    Map<String, Object> map =  new HashMap<>();
    map.put("content", content);
    return map;
}

页面使用表单提交,即可获取表单参数,但是这种方式后端获取到表单内容不好处理,所以一般使用下面方式定义后端接口:

@PostMapping("/car")                            // Person属性和表单属性保持一致,这种情况也可以不加@RequestBody注解
public Map<String, Object> postMethod(@RequestBody Person person){
    Map<String, Object> map =  new HashMap<>();
    map.put("person", person);
    return map;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值