SpringMVC:使用 POJO 对象绑定请求参数值

来源:互联网 发布:网络娱乐游戏如何注册 编辑:程序博客网 时间:2024/05/22 06:06

Spring MVC 会按请求参数名和 POJO setter方法名进行自动匹配,自动为该对象填充属性值。

比如:对于请求参数为name的消息name=lgh,会去调用POJO实例的setName方法来完成对对象的赋值。

支持级联属性。如:address.province、address.city等(实际调用就是getAddress().setProvince())

说的通俗点就是,平时我们想将请求页面的表单数据接收并封装成特定对象的时候,少不了做的是在某个servlet的对应方法中从request中将各个表单参数取出,类型转换好,构造一个特定类型的对象,再把表单参数都存进去。

SpringMVC为我们简化了次操作。


项目配置可参考:http://blog.csdn.net/x_iya/article/details/68945373

package com.xiya.entities;/** * Created by N3verL4nd on 2017/4/1. */public class Address {    private String province;    private String city;    public Address() {    }    public Address(String province, String city) {        this.province = province;        this.city = city;    }    public String getProvince() {        return province;    }    public void setProvince(String province) {        this.province = province;    }    public String getCity() {        return city;    }    public void setCity(String city) {        this.city = city;    }    @Override    public String toString() {        return "Address{" +                "province='" + province + '\'' +                ", city='" + city + '\'' +                '}';    }}
package com.xiya.entities;/** * Created by N3verL4nd on 2017/4/1. */public class Person {    private String name;    private int age;    private Address address;    public Person(String name, int age, Address address) {        this.name = name;        this.age = age;        this.address = address;    }    public Person() {    }    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 Address getAddress() {        return address;    }    public void setAddress(Address address) {        this.address = address;    }    @Override    public String toString() {        return "Person{" +                "name='" + name + '\'' +                ", age=" + age +                ", address=" + address +                '}';    }}

package com.xiya.controllers;import com.xiya.entities.Person;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import java.io.IOException;import java.io.Writer;/** * Created by N3verL4nd on 2017/4/1. */@Controllerpublic class HelloWorld {    @RequestMapping("/user")    public void testPojo(Writer out, Person person) throws IOException {        out.write(person.toString());    }}

F:\>curl "http://localhost:8080/test/user?name=lgh&age=24&address.province=shandong&address.city=liaocheng"
Person{name='lgh', age=24, address=Address{province='shandong', city='liaocheng'}}
F:\>


0 0