学习目标:
SpringMVC 获得请求数据
获得请求参数
学习内容:
获得请求参数
客户端请求参数的格式是:name=value&name=value… … 服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数:
- 基本类型参数
- POJO类型参数
- 数组类型参数
- 集合类型参数
1.1 获得基本类型参数
Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配。
http://localhost:8080/test1?username=zhangsan&age=14
@RequestMapping("/test1")
@ResponseBody
public void quickMethod9(String username,int age) throws IOException {
System.out.println(username);
System.out.println(age);
}
此时会在控制台输出:
zhangsan
14
1.2 获得POJO类型参数
Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。
浏览器输入:
http://localhost:8080/test2?username=zhangsan&age=14
定义User类
public class User {
private String username;
private int age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", age=" + age +
'}';
}
}
编写controller
@RequestMapping(value="/test2")
@ResponseBody
public void save12(User user) throws IOException {
System.out.println(user);
}
}
控制台输出:
User{username=‘zhangsan’, age=14}
1.3 获得数组类型参数
Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配。
浏览器输入
http://localhost:8080/test3?strs=111&strs=222&strs=333
Controller编写
@RequestMapping("/test3")
@ResponseBody
public void quickMethod11(String[] strs) throws IOException {
System.out.println(Arrays.asList(strs));
}
控制台输出:
[111, 222, 333]
1.4 获得集合类型参数
获得集合参数时,要将集合参数包装到一个POJO中才可以。
先写一个POJO类(VO)把集合参数包装到类里面:
public class VO {
private List<User> userList;
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
@Override
public String toString() {
return "VO{" +
"userList=" + userList +
'}';
}
}
一般用表单提交数据,故创建一个表单(from.jsp)用于接收数据
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/test4" method="post">
<%--表明是第几个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>
</body>
</html>
编写controller
@RequestMapping("/test4")
@ResponseBody
public void quickMethod12(Vo vo) throws IOException {
System.out.println(vo.getUserList());
}
浏览器输入
http://localhost:8080/form.jsp
在表单输入以下内容后提交。
可以看到控制台输出集合类型参数为:
VO{userList=[User{username='zhangsan', age=17}, User{username='lisi', age=14}]}
学习时间:
2022.4.8 上午