数据绑定

目标

  1. 简单POJO数据绑定
  2. 自定义类型的POJO类型

思路

  1. 编写实体类以及需要获取的属性名,生成对应的getset方法和toString方法
  2. 新建一个新的jsp页面(params.jsp),里面存放的是表单,可以实现用户的输入功能
  3. 编写Controller类,实现表单提交到控制层处理的事务,并输入用户表单输入的值

实现

Account

public class Account implements Serializable {
    //普通类型封装
    private String username;
    private String password;
    private Double money;

    private User user;//引用类型封装
    //封装集合数据类型
    private List<User> list;
    private Map<String,User> map;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public List<User> getList() {
        return list;
    }

    public void setList(List<User> list) {
        this.list = list;
    }

    public Map<String, User> getMap() {
        return map;
    }

    public void setMap(Map<String, User> map) {
        this.map = map;
    }

    @Override
    public String toString() {
        return "Account{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", money=" + money +
                ", user=" + user +
                ", list=" + list +
                ", map=" + map +
                '}';
    }
}

params.jsp

<form action="param/save" method="post">
    姓名:<input type="text" name="username"><br>
    密码:<input type="text" name="password"><br>
    金额:<input type="text" name="money"><br>
    <input type="submit" value="提交"><br>
</form>

ParamController

@Controller
@RequestMapping("/param")
public class ParamController {

    //获取请求参数的值
    @RequestMapping("/testParam")
    public String testParam(String username,String password){
        System.out.println("执行了");
        System.out.println(username);
        System.out.println(password);
        return "success";
    }
    }

对应的spring-mvc.xml和web.xml里面的配置信息这里就不在重复了,请参考第一个SpringMVC

接下来就是演示阶段了,配置好Tomcat,运行
数据绑定
注意:地址栏要输入你对应的存放jsp目录,默认是寻找webapp的index.jsp页面

当我们前端输入框输入我想要的值时候
数据绑定
在控制台会进行打印
数据绑定

并且成功跳转成功页面(success.jsp)
数据绑定
到这里就实现了简单的POJO数据绑定

接下来实现包装POJO类型的数据

引言

使用简单POJO类型已经可以完成多数的数据绑定,但有时客户端请求中传递的参数会比较复杂。例如:在用户查询订单的时候,页面传递的参数可能包括订单编号、用户名称等信息,这就包含了订单和用户俩个对象的信息。如果将订单和用户的所有查询条件都封装到一个简单的POJO中,会显得很复杂,这时候我们可以采用包装POJO类型实现数据绑定

思路

  1. 在新建一个实体类User类,并将User作为Account类的属性
  2. 编写表单获取User属性值

User

package cn.xys.domin;

import java.io.Serializable;

/**
 * @author 爱敲代码的小白
 * @date 2021/1/8 14:30
 */
public class User implements Serializable {
    private int age;
    private String address;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}

params.jsp


<%--前端输入框输入数据,绑定POJO类型将数据控制台输出--%>
<form action="param/save" method="post">
    姓名:<input type="text" name="username"><br>
    密码:<input type="text" name="password"><br>
    金额:<input type="text" name="money"><br>
    用户年龄:<input type="text" name="user.age"><br>
    用户地址:<input type="text" name="user.address"><br>
    <input type="submit" value="提交"><br>
</form>

注意:表单里面的文本框的name值对应的是实体类的属性名,且必须要相同,否则找不到对应属性的set方法

接下来就是运行的时候啦,启动Tomcat

数据绑定

控制台输出Account的数据
数据绑定
注明:这里的list和map为null的原因是表单没有设置该获取的文本框

提交之后也成功跳转到成功页面(success.jsp)
数据绑定

到这里我们实现了简单POJO的数据绑定和包装POJO类型的数据绑定

上一篇:冒泡排序的实现及优化和变形


下一篇:POJO(Plain Old Java Object)和DTO(Data Transfer Object)有什么区别?