SpringMVC的请求-获得请求参数
SpringMVC可以接收如下类型的参数
-
基本类型参数
-
POJO类型参数
-
数组类型参数
-
集合类型参数
获得基本类型参数
Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配。并且能自动做类型转换。
http://localhost:8080/eight?name=liu&age=2
// 获得基本类型参数
@RequestMapping("eight")
@ResponseBody
public void test8(String name, int age) {
System.out.println(name);
System.out.println(age);
}
获得POJO类型参数
Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。
http://localhost:8080/night?name=liu&age=2
package com.domain;
public class User {
String name;
int age;
public User() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
// 获得pojo类型参数
@RequestMapping("night")
@ResponseBody
public void test9(User user) {
System.out.println(user.getName());
System.out.println(user.getAge());
}
获得数组类型参数
Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配。
http://localhost:8080/ten?str=1&str=2&str=3
// 获得数组类型参数
@RequestMapping("ten")
@ResponseBody
public void test10(String str[]) {
int length = str.length;
for (int i = 0; i < length; i++) {
System.out.println(str[i]);
}
}
获得集合类型参数(两种实现方式)
- 将集合参数包装到一个POJO中
- 使用ajax提交时
获得集合类型参数:将集合参数包装到一个POJO中
<form action="${pageContext.request.contextPath}/eleven" method="post">
<%--表明是第一个User对象的username age--%>
<input type="text" name="list[0].name"><br/>
<input type="text" name="list[0].age"><br/>
<%--表明是第二个User对象的username age--%>
<input type="text" name="list[1].name"><br/>
<input type="text" name="list[1].age"><br/>
<input type="submit" value="提交">
</form>
package com.domain;
import java.util.List;
public class VO {
List<User> list;
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
}
@Override
public String toString() {
return "VO{" +
"list=" + list +
'}';
}
}
// 获得集合类型参数
@RequestMapping("eleven")
@ResponseBody
public void test11(VO user) {
System.out.println(user);
}
获得集合类型参数:使用ajax提交
当使用ajax提交时,可以指定contentType为json形式,那么在方法参数位置使用@RequestBody可以直接接收集合数据而无需使用POJO进行包装
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<script src="${pageContext.request.contextPath}/js/jquery-3.3.1.min.js" type="text/javascript"></script>
<script>
var userList = new Array();
userList.push({name:"liu",age:18});
userList.push({name:"wang",age:21});
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/twelve",
data:JSON.stringify(userList),
contentType:"application/json;charset=utf-8"
});
</script>
</head>
<body>
</body>
</html>
// 获得集合类型参数
@RequestMapping("twelve")
@ResponseBody
public void test12(@RequestBody List<User> user) {
System.out.println(user);
}