随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。

创建相关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中的属性向对应并赋值了。

 

如果是包装类型的简单变量直接输入属性名字:表单元素的name : name="id"

数组 : 保证这一组的表单元素都是同样的name:name="alias"

List: 必须加上[索引] name="list[0]" 如果List<User> : name="list[0].name"

map: 必须加上[key]name="map["key"]

实体类: 只能给某个属性去赋值name="object.xxx

  

posted on 2022-06-08 18:04  时间完全不够用啊  阅读(302)  评论(0编辑  收藏  举报