SpringMVC框架学习(十)——参数绑定(中)

SpringMVC之参数绑定(中)

接上篇文章

3、简单实体类型的绑定(使用简单对象接收参数)

假如说我们从前台传过来多个属性值,我们从后台一个一个接收,势必要在方法中定义多个形参,很是繁琐,并且有些公司编码规范中要求方法的形参不能超过5个,这时候我们就可以使用实体类接收参数。实际上,在开发中,大部分情况下,都是实体类。

创建一个Student实体类,这个类包含name,age属性:

public class Student {
    private String name;
    private int age;

    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;
    }
}

JSP页面:注意输入框的 name 属性值和上面 POJO 实体类的属性保持一致即可映射成功。

<form method="post" action="three">
    姓名:<input type="text" name="name"><br>
    年龄:<input type="text" name="age"><br>
    <input type="submit" value="提交"><br>
</form>

这样服务端后台就可以用一个对象Student接收数据方式,非常方便,如下:

@RequestMapping("/three")
    public ModelAndView test3(Student student) throws Exception{
        ModelAndView mv = new ModelAndView();
        mv.addObject("name", student.getName());
        mv.addObject("age", student.getAge());
        mv.setViewName("showEasy");
        return mv;
    }

访问结果和之前是一样:
在这里插入图片描述

4、包装的实体类型的绑定(使用包装对象接收参数)

这个包装类型对象与上面普通的对象有啥区别呢?包装类型对象指的是对象中有另一个也是对象的属性,即对象套对象,为什么会设计这种对象呢?这种组合的设计方法对于后期程序的扩展很有用,比如复杂的查询条件就需要包装到这种包装类型中。

举一个例子,我们之前有一个学生对象,那么学生就肯定会有学校信息,而学校也封装成了一个对象,则学生中可以给定一个属性为学校的对象,相当于school对象作为了student的一个属性存在:

School对象如下:

public class School {
    private String schoolName;// 学校名称
    private String address;// 学校地址

    public String getSchoolName() {
        return schoolName;
    }
    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}

Student对象如下:

public class Student {
    private String name;
    private int age;
    private School school; //school对象作为了student的一个属性,是一个对象属性

    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;
    }
    public School getSchool() {
        return school;
    }
    public void setSchool(School school) {
        this.school = school;
    }
}

那么此时,jsp中新增的两个input中的schoolName和address的name属性值该怎么给呢?

这里我们使用对象.属性的形式,SpringMVC才可以识别:

form method="post" action="four">
    姓名:<input type="text" name="name"><br>
    年龄:<input type="text" name="age"><br>
    学校名称:<input type="text" name="school.schoolName"><br>
    学校地址:<input type="text" name="school.address"><br>
    <input type="submit" value="提交"><br>
</form>

对于的controller中修改为:

    @RequestMapping("/four")
    public ModelAndView test3(Student student) throws Exception{
        ModelAndView mv = new ModelAndView();
        mv.addObject("name", student.getName());
        mv.addObject("age", student.getAge());
        mv.addObject("schoolName", student.getSchool().getSchoolName());
        mv.addObject("address", student.getSchool().getAddress());
        mv.setViewName("showEasy");
        return mv;
    }

访问页面如下:
在这里插入图片描述
在这里插入图片描述

发布了61 篇原创文章 · 获赞 0 · 访问量 617

猜你喜欢

转载自blog.csdn.net/weixin_44075963/article/details/103658885