1、通过HttpServletRequest 接收参数
在方法的形参中定义HttpServletRequest。
@GetMapping("/login")
public viod login(HttpServletRequest request) {
//getParameter括号里面的参数名字必须和前端传过来的名字一样
//例如:http://127.0.0.1/user/login?userName=zs&pwd=123
String userName = request.getParameter("userName");
String pwd = request.getParameter("pwd");
}
2、通过@RequestParam接收参数
在方法的形参中加入@RequestParam注解。
@RequestMapping("/login")
public void login(@RequestParam(value="name" ,required=true) String userName,
@RequestParam(value="pwd" ,required=true) String password,
HttpServletResponse response) {
// @RequestParam(value="name" ,required=true) required=true传入的值不允许为空
// URL: http://127.0.0.1/user/login?name=zs&pwd=123
System.out.println(userName + "||" + password);
}
@RequestParam有可以有三个参数:
- value:参数名,必写(需要和传过来的参数名命名一致)
- required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
- defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
注意!!!
传入Date类型的时候要加注解
(@PathVariable Long id, @PathVariable status,
@RequestParam(value = "maintenanceStarTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date maintenanceStarTime,
@RequestParam(value = "maintenanceEndTime", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date maintenanceEndTime)
3、 通过@PathVariable接收参数
在方法的形参中加入@PathVariable注解,进行绑定占位符。
- 若方法参数名称和需要绑定的url中变量名称一致时,可以简写:
@RequestMapping("/login/{userName}/{pwd}")
public void loginTwo(@PathVariable String userName,
@PathVariable String pwd) {
// URL: http://127.0.0.1/user/login/zs/123
System.out.println(userName + "||" + pwd);
}
- 若方法参数名称和需要绑定的url中变量名称不一致时,写成:
@RequestMapping("/login/{userName}/{pwd}")
public void loginTwo(@PathVariable("userName") String name,
@PathVariable String pwd) {
// URL: http://127.0.0.1/user/login/zs/123
System.out.println(name + "||" + pwd);
}
- 若传参可以为空时:
//需要写两个url路径,匹配传参为空和不为空 @RequestMapping(value={"/login/{pwd}","/login/{userName}/{pwd}"}) //将@PathVariable("userName")改为@PathVariable(name="userName",required = false) public void loginTwo(@PathVariable(name="userName",required = false) String name, @PathVariable String pwd) { // URL: http://127.0.0.1/user/login/zs/123 System.out.println(name + "||" + pwd); }
4、通过@RequestBody 接收参数
在方法的形参中加入@RequestBody 注解,进行接收json格式的请求体。用来处理application/json
、application/xml
等类型的数据。
!注意:
- 在GET请求中,不能使用@RequestBody。
@RequestMapping("/login")
public void loginTwo(@RequestBody User user) {
System.out.println(user);
}