1.获得基本类型参数
Controller中的业务方法的参数名要与请求参数的name一致,参数值会自动映射匹配
@RequestMapping("/get")
@ResponseBody // 表示不进行页面跳转
public void getParams(String username, int age){
System.out.println(username);
System.out.println(age);
}
2.获得POJO类型参数
Controller中的业务方法的POJO参数的属性名要与请求参数的name一致,参数值会自动映射匹配
(举个栗子:User类有两个属性username和age,那么请求参数的参数名也必须是username和age)
public class User {
private String username;
private int age;
Getter/Setter......
}
@RequestMapping("/get2")
@ResponseBody // 表示不进行页面跳转
public void getParams2(User user){
System.out.println(user);
}
3.获得数组类型的参数
Controller中的业务方法的数组名要与请求参数的name一致,参数值会自动映射匹配:
在浏览器中输入:http://localhost:8080/Spring_05_mvc_war/user/get3?strs=Alice&strs=Bob&strs=David
@RequestMapping("/get3")
@ResponseBody // 表示不进行页面跳转
public void getParams3(String[] strs){
System.out.println(Arrays.toString(strs));
}
4.获得集合类型的参数
方法一:将集合参数包装到一个VO对象中才可以:
public class VO {
private List<User> userList;
Getter/Setter...
}
@RequestMapping("/get4")
@ResponseBody // 表示不进行页面跳转
public void getParams4(VO vo){
System.out.println(vo);
}
但是,在提交请求的地方一定要清晰地指明对象的具体名称才行:
<form action="${pageContext.request.contextPath}/user/get4" method="get">
<%--表明时第几个User对象的username或age--%>
<input type="text" name="userList[0].username"> <br/>
<input type="text" name="userList[0].age"> <br/>
<input type="text" name="userList[1].username"> <br/>
<input type="text" name="userList[1].age"> <br/>
<input type="submit" value="提交">
</form>
方法二:使用Ajax提交,直接接收集合数据
使用Ajax提交时,可以指定contentType为json形式,在方法参数位置加上@RequestBody可以直接接受集合数据,
而无需再用POJO或VO对其进行包装了
@RequestMapping("/get5")
@ResponseBody
public void getParams5(@RequestBody(required = false) List<User> userList){
System.out.println(userList);
}
但是这里还涉及到前端的东西,要用ajax和jQuery相关的东西,在此就不做赘述了。。。