Spring MVC 数据绑定(四)
2016-01-27 17:51
471 查看
Spring支持多种形式的类型绑定,包括:
1、基本数据类型、String和String[]
2、简单对象类型
3、List类型
4、Set类型
5、Map类型
6、复合数据类型
接下来一个一个的实现:
1、基本数据类型、String和String[]。
请求处理方法:
public void registBean(String username,int age,double income,String[] interests,boolean marrid)
保证JSP页面上提交项和方法中对应参数同名。其中boolean的提交项的value是字符串true和false。
2、简单对象类型
请求处理方法:
public void registBean(UserBean2 user)
需要保证JSP页面上提交项和UserBean对象中的属性同名即可。
3、List类型
List需要绑定在Bean对象上,直接写在请求处理方法中作为参数是不行的,更重要的一点是要创建对象(ArrayList).
public class UserBean2{
private List<AddressListBean> list= new ArrayList<AddressListBean>();
}
请求处理方法:
public void registBean(UserBean2 user)
JSP页面上提交项的命名:参数名[下标].属性名。
4、 Set类型
与List方法类似,但是必须先在Set对象中Add相应的数量的模型对象.
public class UserBean2{
private Set<AddressSetBean> set= new HashSet<AddressSetBean>();
public Classes(){
set.add(new AddressSetBean());
set.add(new AddressSetBean());
set.add(newAddressSetBean());
}
}
5、Map对象
Map也需要绑定在Bean对象上。
public class UserBean2{
private Map<String String> map= new HashMap<String String>();
}
请求处理方法:
public void registBean(UserBean2 user)
JSP页面上的提交项命名:参数名[‘键名’]
6、复合数据类型
所谓复合数据类型,指代自定义Bean中某个属性又是一个自定义Bean.
public class UserBean2{
private String name;
private int age;
private AddressBean address;
}
请求处理方法:
public void registBean(UserBean2 user)
JSP页面提交项命名:复合属性名.属性名
主要代码:
页面设置“
业务控制器:
控制台显示:
数据绑定over。
1、基本数据类型、String和String[]
2、简单对象类型
3、List类型
4、Set类型
5、Map类型
6、复合数据类型
接下来一个一个的实现:
1、基本数据类型、String和String[]。
请求处理方法:
public void registBean(String username,int age,double income,String[] interests,boolean marrid)
保证JSP页面上提交项和方法中对应参数同名。其中boolean的提交项的value是字符串true和false。
2、简单对象类型
请求处理方法:
public void registBean(UserBean2 user)
需要保证JSP页面上提交项和UserBean对象中的属性同名即可。
3、List类型
List需要绑定在Bean对象上,直接写在请求处理方法中作为参数是不行的,更重要的一点是要创建对象(ArrayList).
public class UserBean2{
private List<AddressListBean> list= new ArrayList<AddressListBean>();
}
请求处理方法:
public void registBean(UserBean2 user)
JSP页面上提交项的命名:参数名[下标].属性名。
4、 Set类型
与List方法类似,但是必须先在Set对象中Add相应的数量的模型对象.
public class UserBean2{
private Set<AddressSetBean> set= new HashSet<AddressSetBean>();
public Classes(){
set.add(new AddressSetBean());
set.add(new AddressSetBean());
set.add(newAddressSetBean());
}
}
5、Map对象
Map也需要绑定在Bean对象上。
public class UserBean2{
private Map<String String> map= new HashMap<String String>();
}
请求处理方法:
public void registBean(UserBean2 user)
JSP页面上的提交项命名:参数名[‘键名’]
6、复合数据类型
所谓复合数据类型,指代自定义Bean中某个属性又是一个自定义Bean.
public class UserBean2{
private String name;
private int age;
private AddressBean address;
}
请求处理方法:
public void registBean(UserBean2 user)
JSP页面提交项命名:复合属性名.属性名
主要代码:
package com.cy.springannotation.entity; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class UserBean2 { private String username; private int age; private double income; private String[] interests; private boolean married; //List不能单独使用,必须要绑定到某一个具体的Bean,并且要实例化ArrayList private List<AddressListBean> list=new ArrayList<AddressListBean>(); //Set不能单独使用,必须要绑定到某一个具体的Bean,并且要实例化HashSet private Set<AddressSetBean> set=new HashSet<AddressSetBean>(); //Map不能单独使用,必须要绑定到某一个具体的Bean,并且要实例化HashMap private Map<String,AddressMapBean> map=new HashMap<String,AddressMapBean>(); //复合数据类型 private AddressBean address; public UserBean2(){ //set集合需要提前定义个数 for(int i=0;i<2;i++){ AddressSetBean asb=new AddressSetBean(); set.add(asb); } } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getIncome() { return income; } public void setIncome(double income) { this.income = income; } public String[] getInterests() { return interests; } public void setInterests(String[] interests) { this.interests = interests; } public boolean isMarried() { return married; } public void setMarried(boolean married) { this.married = married; } public Map<String, AddressMapBean> getMap() { return map; } public void setMap(Map<String, AddressMapBean> map) { this.map = map; } public Set<AddressSetBean> getSet() { return set; } public void setSet(Set<AddressSetBean> set) { this.set = set; } public List<AddressListBean> getList() { return list; } public void setList(List<AddressListBean> list) { this.list = list; } public AddressBean getAddress() { return address; } public void setAddress(AddressBean address) { this.address = address; } }
页面设置“
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>注册页面</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="regist.do" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="username"/></td> </tr> <tr> <td>年龄:</td> <td><input type="text" name="age"/></td> </tr> <tr> <td>收入:</td> <td><input type="text" name="income"/></td> </tr> <tr> <td>兴趣:</td> <td><input type="checkbox" name="interests" value="看书"/>看书 <input type="checkbox" name="interests" value="上网"/>上网 <input type="checkbox" name="interests" value="唱歌"/>唱歌 <input type="checkbox" name="interests" value="运动"/>运动 <input type="checkbox" name="interests" value="散步"/>散步 </td> </tr> <tr> <td>是否结婚:</td> <td><input type="radio" name="married" value="true" checked="checked"/>是 <input type="radio" name="married" value="false" />否 </td> </tr> <tr> <td>list地址1:</td> <td><input type="text" name="list[0].addressListName"/></td> </tr> <tr> <td>list地址2:</td> <td><input type="text" name="list[1].addressListName"/></td> </tr> <tr> <td>set地址1:</td> <td><input type="text" name="set[0].addressSetName"/></td> </tr> <tr> <td>set地址2:</td> <td><input type="text" name="set[1].addressSetName"/></td> </tr> <tr> <td>map地址1:</td> <td><input type="text" name="map['a0'].addressMapName"/></td> </tr> <tr> <td>map地址2:</td> <td><input type="text" name="map['a1'].addressMapName"/></td> </tr> <tr> <td>地址:</td> <td><input type="text" name="address.addressName"/></td> </tr> <tr> <td colspan="2"> <input type="submit" value="注册"/> </td> </tr> </table> </form> </body> </html>
业务控制器:
package com.cy.springannotation.controller; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.cy.springannotation.entity.AddressListBean; import com.cy.springannotation.entity.AddressSetBean; import com.cy.springannotation.entity.UserBean2; @Controller public class RegistController { private Logger log = Logger.getLogger(this.getClass()); /* @RequestMapping("/regist.do") public String regist(String username,int age,double income,String[] interests,boolean married){ log.info("username="+username); log.info("age="+age); log.info("income="+income); log.info("interests="+interests.length); log.info("married="+married); for (String string : interests) { log.info("兴趣有:"+string); } return "index"; } */ //简单对象类型 @RequestMapping("/regist.do") public String registBean(UserBean2 user){ log.info("username:"+user.getUsername()); log.info("age:"+user.getAge()); log.info("income:"+user.getIncome()); log.info("interests.length:"+user.getInterests().length); log.info("married:"+user.isMarried()); log.info("addressList.size():"+user.getList().size()); log.info("addressSet.size():"+user.getSet().size()); log.info("addressMap.size():"+user.getMap().size()); log.info("address:"+user.getAddress().getAddressName()); for (String string : user.getInterests()) { log.info("具体的兴趣有=========" + string); } for(AddressListBean add:user.getList()){ log.info("具体的list地址有=========" + add.getAddressListName()); } for(AddressSetBean asetb:user.getSet()){ log.info("具体的set地址有=========" + asetb.getAddressSetName()); } for(int i=0;i<2;i++){ log.info("具体的map地址有=========" + user.getMap().get("a"+i).getAddressMapName()); } return "index"; } }
控制台显示:
数据绑定over。
相关文章推荐
- java -D參数简化增加多个jar【简化设置classpath】
- JAVA启蒙
- Java注解-自定义注解实例
- java字符串判断相等
- Spring框架的设计理念与设计模式分析
- JAVA压缩图片并打成ZIP
- Java 入门 之 泛型
- spring profiles
- Java的文件读写操作
- JavaWeb会遇到的GBK、UTF-8、Unicode编码方式知识小结
- 自学Java过程
- eclipse sdk 无法更新
- 关于JAVA堆栈的认识【转】
- Java类加载器浅析
- JAVA字符串中所用的方法
- 使用java mail进行简单的邮件收发
- 小码农的代码(二)----------SpringJDBC事务控制
- Arrays类操作数组的使用
- 小码农的代码(三)----------SpringJDBC多数据源应用
- java计算文本MD5值