springmvc数据的绑定

String类型和基本数据类型

在springmvc中,如果将String类型和基本数据类型绑定到方法中,就必须保证表单中的"name"属性值或参数值要与要表单方法中的参数值一致,否则无法成功绑定(除非使用@RequestParam注解)。

<a href="${pageContext.request.contextPath}/testBindInteger?money=100">测试绑定基本数据类型</a>


	<form action="testBindString" method="get">
		姓名:<input type="text" name="name"><br>
		<input type="submit" value="提交">
	</form>

@RequestMapping("testBindInteger")
	public String testBindInteger(Integer money){
		
		System.out.println(money);
		return "success";
		
	}
	@RequestMapping("testBindString")
	public String testBindString(String name){
		
		System.out.println(name);
		return "success";
		
	}

类对象

单一类对象

在springmvc中如果将数据绑定(封装)到类对象中,则类对象的各属名称性必须与表单中"name"的属性值保持一致,并且类对象的各属性必须有set方法,否则,无法绑定(封装成功)。

<form action="testBindBody" method="post">
		ID:<input type="text" name="id"><br>
		姓名:<input type="text" name="name"><br>
		资金:<input type="text" name="money"><br>
		<input type="submit" value="提交">
	</form>
public class Body  {
	
	private Integer id;
	private String name;
	private Float money;
	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 Float getMoney() {
		return money;
	}
	public void setMoney(Float money) {
		this.money = money;
	}
	
	@Override
	public String toString() {
		return "Body [id=" + id + ", name=" + name + ", money=" + money + "]";
	}
}
@RequestMapping("/testBindBody")
	public String testBindBody(Body body){
		
		System.out.println(body);
		return "success";
		
	}

类中类对象

<form action="testBindAccount" method="post">
		账户ID:<input type="text" name="id"/><br>
		账户名称:<input type="text" name="name"/><br>
		账户金额:<input type="text" name="money"/><br>
		<%-- 当一个类中定义了另一个类时,可以使用
				"类中定义类的属性"."类的属性"的方式来绑定(如:"address.provinceName")。
		 --%>
		账户省份:<input type="text" name="address.provinceName"/><br>
		账户城市:<input type="text" name="address.cityName"/><br>
		<input type="submit" value="提交">
	</form>
public class Address {
	
	private String provinceName;
	private String cityName;
	public String getProvinceName() {
		return provinceName;
	}
	public void setProvinceName(String provinceName) {
		this.provinceName = provinceName;
	}
	public String getCityName() {
		return cityName;
	}
	public void setCityName(String cityName) {
		this.cityName = cityName;
	}
	
	@Override
	public String toString() {
		return "Address [provinceName=" + provinceName + ", cityName=" + cityName + "]";
	}
}
public class Account {

	private Integer id;
	private String name;
	private Float money;
	private Address address;
	
	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 Float getMoney() {
		return money;
	}
	public void setMoney(Float money) {
		this.money = money;
	}
	public Address getAddress() {
		return address;
	}
	public void setAddress(Address address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return "Account [id=" + id + ", name=" + name + ", money=" + money + ", address=" + address + "]";
	}
	
}
@RequestMapping("/testBindAccount")
	public String testBindAccount(Account account){
		
		System.out.println(account);
		return "success";	
	}

注:在springmvc中绑定类对象时,springmvc会自动调用类对象的set方法来将数据绑定(封装)到类对象中,所以类对象的属性名称与表单的"name"属性值必须保持一致。

复杂类型

数组

	<form action="testBindUser" method="post">
		用户密码:<input type="password" name="password"/><br>
		用于姓名:<input type="text" name="userName"/><br>
		用户年龄:<input type="text" name="age"/><br>
		<%-- 使用数组的下标来换取对应的类对象,
		然后在调用还类对象的属性名称(如:"bodyList[0].id")
		 --%>
		账户1ID:<input type="text" name="bodyList[0].id"/><br>
		账户1姓名:<input type="text" name="bodyList[0].name"/><br>
		账户1金额:<input type="text" name="bodyList[0].money"><br>
		账户2ID:<input type="text" name="bodyList[1].id"/><br>
		账户2姓名:<input type="text" name="bodyList[1].name"/><br>
		账户2金额:<input type="text" name="bodyList[1].money"><br>
		<input type="submit" value="提交">
	</form>
	private String userName;
	private String password;
	private Integer age;
	private List<Body> bodyList;
	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 Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public List<Body> getBodyList() {
		return bodyList;
	}
	public void setBodyList(List<Body> bodyList) {
		this.bodyList = bodyList;
	}
	@Override
	public String toString() {
		return "User [userName=" + userName + ", password=" + password + ", age=" + age + ", bodyList=" + bodyList
				+ "]";
	}	
@RequestMapping("testBindUser")
	public String testBindUser(User user){
		
		System.out.println(user);
		return "success";
	}

Map类型

<form action="testBindUser" method="post">
		用户密码:<input type="password" name="password"/><br>
		用于姓名:<input type="text" name="userName"/><br>
		用户年龄:<input type="text" name="age"/><br>
		<%-- 使用bodyMap['one']来构建key值(即"one"就是key的值),
		value值就是对象(body),然后在调用还类对象的属性名称(如:"bodyMap['one'].id")
		 --%>
		账户1ID:<input type="text" name="bodyMap['one'].id"/><br>
		账户1姓名:<input type="text" name="bodyMap['one'].name"/><br>
		账户1金额:<input type="text" name="bodyMap['one'].money"><br>
		账户2ID:<input type="text" name="bodyMap['two'].id"/><br>
		账户2姓名:<input type="text" name="bodyMap['two'].name"/><br>
		账户2金额:<input type="text" name="bodyMap['two'].money"><br>
		<input type="submit" value="提交">
	</form>
import java.util.Map;

public class User {
	
	private String userName;
	private String password;
	private Integer age;
	private Map<String,Body> bodyMap;
	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 Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Map<String, Body> getBodyMap() {
		return bodyMap;
	}
	public void setBodyMap(Map<String, Body> bodyMap) {
		this.bodyMap = bodyMap;
	}
	
	@Override
	public String toString() {
		return "User [userName=" + userName + ", password=" + password + ", age=" + age + ", bodyMap=" + bodyMap + "]";
	}

}
@RequestMapping("testBindUser")
	public String testBindUser(User user){
		
		System.out.println(user);
		return "success";
	}

servletAPI类型

<a href="textServletAPI">访问原始的servletAPI对象</a>
@RequestMapping("/textServletAPI")
	public String textServletAPI(HttpServletRequest request,HttpServletResponse response){
		
		System.out.println(request);
		System.out.println(response);
		System.out.println(request.getSession());
		System.out.println(request.getServletContext());
		return "success";	
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值