创建相关Bean:
package cn.cdulm.entity;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
public class User {
private Integer id;
private String name;
private String[] alias; // 小名
private List<String> habbies; // 兴趣
private Map<String,String> relatives; // 亲属
private Role role;
private List<User> friends; // 朋友
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", alias=" + Arrays.toString(alias) +
", habbies=" + habbies +
", relatives=" + relatives +
", role=" + role +
", friends=" + friends +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(id, user.id) && Objects.equals(name, user.name) && Arrays.equals(alias, user.alias) && Objects.equals(habbies, user.habbies) && Objects.equals(relatives, user.relatives) && Objects.equals(role, user.role) && Objects.equals(friends, user.friends);
}
@Override
public int hashCode() {
int result = Objects.hash(id, name, habbies, relatives, role, friends);
result = 31 * result + Arrays.hashCode(alias);
return result;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String[] getAlias() {
return alias;
}
public void setAlias(String[] alias) {
this.alias = alias;
}
public List<String> getHabbies() {
return habbies;
}
public void setHabbies(List<String> habbies) {
this.habbies = habbies;
}
public Map<String, String> getRelatives() {
return relatives;
}
public void setRelatives(Map<String, String> relatives) {
this.relatives = relatives;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
public List<User> getFriends() {
return friends;
}
public void setFriends(List<User> friends) {
this.friends = friends;
}
}
package cn.cdulm.entity;
import java.util.Objects;
public class Role {
private Integer id;
private String name;
@Override
public String toString() {
return "Role{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Role role = (Role) o;
return Objects.equals(id, role.id) && Objects.equals(name, role.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
创建处理请求的方法:
package cn.cdulm.controller;
import cn.cdulm.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class UserController {
@RequestMapping("/user")
public String getUser(User user){
System.out.print(user);
return "index.jsp";
}
}
创建表单JSP:
<%--
Created by IntelliJ IDEA.
User: CDU_LM
Date: 2022/6/8
Time: 17:11
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user" method="post" >
id:<input name="id" type="text"/><br/><br/>
姓名:<input name="name" type="text"/><br/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
访问这个JSP:
输入参数:
输出结果:
可以发现将表单中提交的内容和user中的属性进行自动匹配。
现在将所有属性对表单中的参数进行匹配
表单JSP:
<%--
Created by IntelliJ IDEA.
User: CDU_LM
Date: 2022/6/8
Time: 17:11
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user" method="post" >
id:<input name="id" type="text"/><br/><br/>
姓名:<input name="name" type="text"/><br/><br/>
<%--数组--%>
小名:<input name="alias" type="checkbox" value="狗蛋" checked/>狗蛋
<input name="alias" type="checkbox" value="小黑" checked/>小黑<br/><br/>
<%--List--%>
爱好:<input name="habbies" type="checkbox" value="唱歌" checked/>唱歌
<input name="habbies" type="checkbox" value="跳舞" checked/>跳舞<br/><br/>
<%--Map--%>
亲属:<input name="relatives['father']" type="checkbox" value="爸爸" checked/>
<input name="relatives['mother']" type="checkbox" value="妈妈" checked/>妈妈<br/><br/>
<%--其它Bean--%>
角色:<input name="role.name" type="text"/><br/><br/>
<%--List<Bean>--%>
朋友:<input name="friends[0].name" type="text" value="张三"/><br/><br/>
<input name="friends[1].name" type="text" value="李四"/><br/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
访问页面:
输出结果:
User{id=11, name='蜘蛛侠', alias=[狗蛋, 小黑], habbies=[唱歌, 跳舞], relatives={father=爸爸, mother=妈妈}, role=Role{id=null, name='萨达'}, friends=[User{id=null, name='张三', alias=null, habbies=null, relatives=null, role=null, friends=null}, User{id=null, name='李四', alias=null, habbies=null, relatives=null, role=null, friends=null}]}
发现自动将表单的数据与Bean中的属性向对应并赋值了。
1 2 3 4 5 6 7 8 9 | 如果是包装类型的简单变量直接输入属性名字:表单元素的name : name= "id" 数组 : 保证这一组的表单元素都是同样的name:name= "alias" List: 必须加上[索引] name= "list[0]" 如果List<User> : name= "list[0].name" map: 必须加上[key]name= "map[" key"] 实体类: 只能给某个属性去赋值name="object.xxx |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)