spring中的请求参数

spring中的请求参数

创建:2020/4/20
环境:spring-boot 2.2.6.RELEASE
修改:2020/4/20

@RequestMapping注解可以接收字符串数组,类级别的作用于所有方法,方法的访问路径是类级别与方法级别相结合。下面a方法的访问路径有 /mu/a, /mu/b, /yu/a, /yu/b
@RestController注解是@Controller和@ResponseBody的组合注解。使用@ResponseBody注解可以返回数据而不是页面,可以放置在方法或者类上面,类级别作用于所有方法。

@RestController
@RequestMapping(value = {"/mu", "/yu"})
public class RestBodyController {
    @RequestMapping(value = {"/a", "/b"}, method = RequestMethod.GET)
    public String a() {
        return "a";
    }
}

@RequestMapping注解还可以设定请求方法,对于各种请求方法还有对应简化的注解


    @RequestMapping(value = "/", method = RequestMethod.GET) 等同于 @GetMapping("/")
    @RequestMapping(value = "/", method = RequestMethod.POST) 等同于 @PostMapping("/")
    @RequestMapping(value = "/", method = RequestMethod.DELETE) 等同于 @DeleteMapping("/")
    @RequestMapping(value = "/", method = RequestMethod.PUT) 等同于 @PutMapping("/")
    @RequestMapping(value = "/", method = RequestMethod.PATCH) 等同于 @PatchMapping("/")

查询参数

  1. @RequestParam注解接收查询参数的名称,使用defaultValue可以设置默认值,defaultValue只接收String类型。如果变量名和查询参数名相同可以简写。下面的方法可以这样访问 /home/?name=muyu
    @GetMapping("/home")
    public String home(@RequestParam("name")String name) {
//	@RequestParam String name 简写形式
//	@RequestParam(value = "name", defaultValue = "muyu") String name 设置默认值
//	@RequestParam(defaultValue = "muyu") String name  设置默认值时也可以简写
        return "home";
    }

  1. 也可以将参数设置为JavaBean对象,此时查询参数名要与对象属性名相同,下面的方法可以这样访问 /?username=muyu&password=123
// User.java
public class User {
    private String username;
    private String password;
    public User() {}
// 省略getter和setter方法
}
@ResponseBody
@GetMapping("/")
public String b(User user) {
	return user.toString();
}    

路径参数

  1. @RequestMapping注解中用{ }作为占位符, 在处理方法中用@PathVariable注解使用占位符中的变量,占位符中的变量名与方法中的变量名相同可以简写,下面的方法可以这样访问 /rc/123
@RestController
@RequestMapping("/rc")
public class RestBodyController {
    @GetMapping(value = {"/{id}"})
    public String a(@PathVariable(value = "id") int id) {
//	@PathVariable int id 简写形式
        return "a => " + id;
    }
}

表单参数

  1. 表单提交直接将JavaBean对象作为参数即可,对象的属性名要和表单项的name对应
<form action="/form" method="post">
    <label for="username">用户名</label>
    <input type="text" id="username" name="username">

    <label for="password">密码</label>
    <input type="text" id="password" name="password">

    <button type="submit">提交</button>
</form>
    @ResponseBody
    @PostMapping("/form")
    public String postForm(User user) {
        return user.toString();
    }
  1. 对于表单的提交,我们可能还需要对表单内容进行校验
    修改User类,注解@NotNull表示此属性不能为null,注解@Size设定了最大和最小字符串长度
// User.java
public class User {
    @NotNull
    @Size(min = 3, max = 5)
    private String username;
    @NotNull
    @Size(min = 3, max = 5)
    private String password;

    public User() {}
// 省略getter和setter方法
}

使用@Valid注解开启对该对象的校验,当校验失败时errors.hasErrors()就会返回真

    @ResponseBody
    @PostMapping("/form")
    public String postForm(@Valid User user, Errors errors) {

        if(errors.hasErrors()) {
        	// 可以在此处进行校验失败后的操作
            return "失败";
        }
        return user.toString();
    }
    原文作者:暮雨今夕
    原文地址: https://www.cnblogs.com/mywuhao/p/12740406.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞