SpringMVC接收请求参数的常见方式有如下几种:
- 传统方式:req.getParameter()
/**
* 传统方式
* @param req
* @return
*/
@RequestMapping("/test.do")
public String test(HttpServletRequest req){
System.out.println("请求来了");
System.out.println(req.getParameter("userName"));
System.out.println(req.getParameter("password"));
return "index";
}
- 直接在方法形参列表中写形参变量:形参变量名称与请求参数名称一致
/**
* 使用SpringMVC的参数绑定来获取请求参数
* @param userName
* @param password
* @param age
* 注意:
* 1)形参变量名称要与请求中的参数名称保持一致【严格区分大小写】
* 2)支持自动类型转化,但是转化失败就无法进入当前方法去处理请求,报错400【Bad Request】
* 3)8种基本数据类型尽量使用包装类型
* 当请求参数名称与方法形参变量名称不一致时,需要使用@RequestParam注解
* @return
*/
@RequestMapping("/test2.do")
public String test2(String password,String userName,Integer age){
System.out.println("请求来了");
System.out.println(userName);
System.out.println(password);
System.out.println(age);
return "index";
}
- 直接在方法形参列表中写形参变量+@ReqquestParam:形参变量名称与请求参数名称不一致
/**
* 当请求参数名称与方法形参变量名称不一致时,需要使用@RequestParam注解
* @param pwd
* @param uName
* @param age
* @return
*/
@RequestMapping("/test3.do")
public String test3(@RequestParam("password")String pwd,@RequestParam("userName")String uName,@RequestParam("age")Integer age){
System.out.println("请求来了");
System.out.println(uName);
System.out.println(pwd);
System.out.println(age);
return "index";
}
- 直接使用domain实体类对象接收:实体类对象的属性名称与请求参数名称一致,而且属性必须有set方法、domain实体类必须有无参构造
/**
* 使用参数绑定【封装成domain实体类对象,并且将此对象保存到请求作用域中】
* @param user
* @return
*/
@RequestMapping("/test4.do")
public String test4(User user){
System.out.println("请求来了");
System.out.println(user.getUserName());
System.out.println(user.getPwd());
System.out.println(user.getAge());
return "index";
}
- 使用RESTFUL风格:@PathVariable(“aa”) aa字符串仍然要与方法映射中的变量名称一致
/**
* RESTful风格【路径中的变量来传参】
* 要求DispatcherServlet核心控制器的url-pattern必须配置为 /
* http://localhost:8080/demo/p/admin/123
*
* 注意:
* 访问的请求路径中直接填值,传递到方法上,注意顺序
* @param userName
* @param pwd
* @return
*/
@RequestMapping("/{userName}/{pwd}")
public String test5(@PathVariable("userName")String userName,@PathVariable("pwd")String pwd){
System.out.println("请求来了");
System.out.println(userName);
System.out.println(pwd);
return "index";
}
注意:请求参数传递过来都是字符串类型,SpringMVC会自动进行类型转化,若转化失败会报400错误。