`
lee1177
  • 浏览: 117829 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring mvc 几种数据绑定

 
阅读更多

收集spring mvc 几种数据绑定,记录备用

 

org.springframework.beans.PropertyEditorRegistrySupport.java

 

[java] view plaincopy
  1. /** 
  2.      * Actually register the default editors for this registry instance. 
  3.      */  
  4.     private void doRegisterDefaultEditors() {  
  5.         this.defaultEditors = new HashMap<Class, PropertyEditor>(64);  
  6.         // Simple editors, without parameterization capabilities.  
  7.         // The JDK does not contain a default editor for any of these target types.  
  8.         this.defaultEditors.put(Charset.classnew CharsetEditor());  
  9.         this.defaultEditors.put(Class.classnew ClassEditor());  
  10.         this.defaultEditors.put(Class[].classnew ClassArrayEditor());  
  11.         this.defaultEditors.put(Currency.classnew CurrencyEditor());  
  12.         this.defaultEditors.put(File.classnew FileEditor());  
  13.         this.defaultEditors.put(InputStream.classnew InputStreamEditor());  
  14.         this.defaultEditors.put(Locale.classnew LocaleEditor());  
  15.         this.defaultEditors.put(Pattern.classnew PatternEditor());  
  16.         this.defaultEditors.put(Properties.classnew PropertiesEditor());  
  17.         this.defaultEditors.put(Resource[].classnew ResourceArrayPropertyEditor());  
  18.         this.defaultEditors.put(TimeZone.classnew TimeZoneEditor());  
  19.         this.defaultEditors.put(URI.classnew URIEditor());  
  20.         this.defaultEditors.put(URL.classnew URLEditor());  
  21.         // Default instances of collection editors.  
  22.         // Can be overridden by registering custom instances of those as custom editors.  
  23.         this.defaultEditors.put(Collection.classnew CustomCollectionEditor(Collection.class));  
  24.         this.defaultEditors.put(Set.classnew CustomCollectionEditor(Set.class));  
  25.         this.defaultEditors.put(SortedSet.classnew CustomCollectionEditor(SortedSet.class));  
  26.         this.defaultEditors.put(List.classnew CustomCollectionEditor(List.class));  
  27.         this.defaultEditors.put(SortedMap.classnew CustomMapEditor(SortedMap.class));  
  28.         // Default editors for primitive arrays.  
  29.         this.defaultEditors.put(byte[].classnew ByteArrayPropertyEditor());  
  30.         this.defaultEditors.put(char[].classnew CharArrayPropertyEditor());  
  31.         // The JDK does not contain a default editor for char!  
  32.         this.defaultEditors.put(char.classnew CharacterEditor(false));  
  33.         this.defaultEditors.put(Character.classnew CharacterEditor(true));  
  34.         // Spring's CustomBooleanEditor accepts more flag values than the JDK's default editor.  
  35.         this.defaultEditors.put(boolean.classnew CustomBooleanEditor(false));  
  36.         this.defaultEditors.put(Boolean.classnew CustomBooleanEditor(true));  
  37.         // The JDK does not contain default editors for number wrapper types!  
  38.         // Override JDK primitive number editors with our own CustomNumberEditor.  
  39.         this.defaultEditors.put(byte.classnew CustomNumberEditor(Byte.classfalse));  
  40.         this.defaultEditors.put(Byte.classnew CustomNumberEditor(Byte.classtrue));  
  41.         this.defaultEditors.put(short.classnew CustomNumberEditor(Short.classfalse));  
  42.         this.defaultEditors.put(Short.classnew CustomNumberEditor(Short.classtrue));  
  43.         this.defaultEditors.put(int.classnew CustomNumberEditor(Integer.classfalse));  
  44.         this.defaultEditors.put(Integer.classnew CustomNumberEditor(Integer.classtrue));  
  45.         this.defaultEditors.put(long.classnew CustomNumberEditor(Long.classfalse));  
  46.         this.defaultEditors.put(Long.classnew CustomNumberEditor(Long.classtrue));  
  47.         this.defaultEditors.put(float.classnew CustomNumberEditor(Float.classfalse));  
  48.         this.defaultEditors.put(Float.classnew CustomNumberEditor(Float.classtrue));  
  49.         this.defaultEditors.put(double.classnew CustomNumberEditor(Double.classfalse));  
  50.         this.defaultEditors.put(Double.classnew CustomNumberEditor(Double.classtrue));  
  51.         this.defaultEditors.put(BigDecimal.classnew CustomNumberEditor(BigDecimal.classtrue));  
  52.         this.defaultEditors.put(BigInteger.classnew CustomNumberEditor(BigInteger.classtrue));  
  53.         // Only register config value editors if explicitly requested.  
  54.         if (this.configValueEditorsActive) {  
  55.             StringArrayPropertyEditor sae = new StringArrayPropertyEditor();  
  56.             this.defaultEditors.put(String[].class, sae);  
  57.             this.defaultEditors.put(short[].class, sae);  
  58.             this.defaultEditors.put(int[].class, sae);  
  59.             this.defaultEditors.put(long[].class, sae);  
  60.         }  
  61.     }  
 

 

 

1.基本数据类型

很简单,该怎么写就怎么写.

controller代码

 

[java] view plaincopy
  1. @RequestMapping  
  2.     public void test1(String name, Integer age, Double income, Boolean isMarried, String[] interests)  
  3.     {  
  4.         System.out.println("简单数据类型绑定=========");  
  5.         System.out.println("名字:" + name);  
  6.         System.out.println("年龄:" + age);  
  7.         System.out.println("收入:" + income);  
  8.         System.out.println("已结婚:" + isMarried);  
  9.         System.out.println("兴趣:");  
  10.         for (String interest : interests)  
  11.         {  
  12.             System.out.println(interest);  
  13.         }  
  14.         System.out.println("====================");  
  15.     }  
 

 

jsp代码

 

[xhtml] view plaincopy
  1. <form action="test1.do" method="post">  
  2.     <div class="f_left">姓名:</div>  
  3.     <div class="f_left"><input name="name" value="张三"/></div>  
  4.     <div class="clear"></div>  
  5.     <div class="f_left">年龄:</div>  
  6.     <div class="f_left"><input name="age" value="20"/></div>  
  7.     <div class="clear"></div>  
  8.     <div class="f_left">收入:</div>  
  9.     <div class="f_left"><input name="income" value="100000"/></div>  
  10.     <div class="clear"></div>  
  11.     <div class="f_left">结婚:</div>  
  12.     <div class="f_left">  
  13.     <input type="radio" name="isMarried" value="true" checked="checked"/>是  
  14.     <input type="radio" name="isMarried" value="false"/></div>  
  15.     <div class="clear"></div>  
  16.     <div class="f_left">兴趣:</div>  
  17.     <div class="f_left">  
  18.     <input type="checkbox" name="interests" value="听歌" checked="checked"/>听歌  
  19.     <input type="checkbox" name="interests" value="书法" checked="checked"/>书法  
  20.     <input type="checkbox" name="interests" value="看电影" checked="checked"/>看电影  
  21.     </div>  
  22.     <div class="clear"></div>  
  23.     <div><input type="submit" value="提交表单"/></div>  
  24. </form>  
 

 

 

2.简单对象类型

与基本类型相拟,只不过绑定到对象上更加简洁.(类拟struts的ActionForm)

controller代码

  1. @RequestMapping  
  2.     public void test2(User user)  
  3.     {  
  4.         System.out.println("简单对象类型绑定=========");  
  5.         System.out.println("名字:" + user.getName());  
  6.         System.out.println("年龄:" + user.getAge());  
  7.         System.out.println("收入:" + user.getIncome());  
  8.         System.out.println("已结婚:" + user.getIsMarried());  
  9.         System.out.println("========================");  
  10.     }  
 

 

user代码

 

[java] view plaincopy
  1. public class User {  
  2.     private String name;  
  3.     private Integer age;  
  4.     private Boolean isMarried;  
  5.     private Double income;  
  6.     private String[] interests;  
  7.       
  8.     public String getName() {  
  9.         return name;  
  10.     }  
  11.     public void setName(String name) {  
  12.         this.name = name;  
  13.     }  
  14.     public Integer getAge() {  
  15.         return age;  
  16.     }  
  17.     public void setAge(Integer age) {  
  18.         this.age = age;  
  19.     }  
  20.     public Boolean getIsMarried() {  
  21.         return isMarried;  
  22.     }  
  23.     public void setIsMarried(Boolean isMarried) {  
  24.         this.isMarried = isMarried;  
  25.     }  
  26.     public Double getIncome() {  
  27.         return income;  
  28.     }  
  29.     public void setIncome(Double income) {  
  30.         this.income = income;  
  31.     }  
  32.     public String[] getInterests() {  
  33.         return interests;  
  34.     }  
  35.     public void setInterests(String[] interests) {  
  36.         this.interests = interests;  
  37.     }  
  38. }  
 

 

jsp代码

[xhtml] view plaincopy
  1. <form action="test2.do" method="post">  
  2.         <div class="f_left">姓名:</div>  
  3.         <div class="f_left"><input name="name" value="lxf"/></div>  
  4.         <div class="clear"></div>  
  5.         <div class="f_left">年龄:</div>  
  6.         <div class="f_left"><input name="age" value="20"/></div>  
  7.         <div class="clear"></div>  
  8.         <div class="f_left">收入:</div>  
  9.         <div class="f_left"><input name="income" value="100000"/></div>  
  10.         <div class="clear"></div>  
  11.         <div class="f_left">结婚:</div>  
  12.         <div class="f_left">  
  13.         <input type="radio" name="isMarried" value="true" checked="checked"/>是  
  14.         <input type="radio" name="isMarried" value="false"/></div>  
  15.         <div class="clear"></div>  
  16.         <div class="f_left">兴趣:</div>  
  17.         <div class="f_left">  
  18.         <input type="checkbox" name="interests" value="听歌" checked="checked"/>听歌  
  19.         <input type="checkbox" name="interests" value="书法" checked="checked"/>书法  
  20.         <input type="checkbox" name="interests" value="看电影" checked="checked"/>看电影  
  21.         </div>  
  22.         <div class="clear"></div>  
  23.         <div><input type="submit" value="提交表单"/></div>  
  24.     </form>  
 

 

 

3.List类型绑定

网上很多人都给不出答案,关键在于,List需要绑定在对象(ActionForm),直接写在request-mapping函数的参数是不行的,更重要的一点是要创建对象(ArrayList).

controller代码

 

[java] view plaincopy
  1. @RequestMapping  
  2.     public void test3(Club club)  
  3.     {  
  4.         System.out.println("list类型绑定=========");  
  5.         System.out.println("会员:");  
  6.         for (User user : club.getUsers())  
  7.         {  
  8.             System.out.println(user.getName());  
  9.         }  
  10.         System.out.println("========================");  
  11.     }  
 

 

Club代码

 

[java] view plaincopy
  1. public class Club {  
  2.     private List<User> users = new ArrayList<User>();  
  3.       
  4.     public List<User> getUsers() {  
  5.         return users;  
  6.     }  
  7.       
  8.     public void setUsers(List<User> users) {  
  9.         this.users = users;  
  10.     }  
  11. }  
 

 

jsp代码

 

[xhtml] view plaincopy
  1. <form action="test3.do" method="post">  
  2.         <div class="f_left">会员1号:</div>  
  3.         <div class="f_left">  
  4.         <input name="users[0].name" value="张三"/>  
  5.         </div>  
  6.         <div class="clear"></div>  
  7.         <div class="f_left">会员2号:</div>  
  8.         <div class="f_left">  
  9.         <input name="users[1].name" value="李四"/>  
  10.         </div>  
  11.         <div class="clear"></div>  
  12.         <div class="f_left">会员3号:</div>  
  13.         <div class="f_left">  
  14.         <input name="users[2].name" value="王五"/>  
  15.         </div>  
  16.         <div class="clear"></div>  
  17.         <div><input type="submit" value="提交表单"/></div>  
  18.     </form>  
 

 

 

4.Set类型绑定

与List类型相似,经测试表明,绑定Set数据时,必须先在Set对象中Add相应的数量的模型对象.

controller代码

 

[java] view plaincopy
  1. @RequestMapping  
  2.     public void test4(Club2 club)  
  3.     {  
  4.         System.out.println("set类型绑定=========");  
  5.         System.out.println("会员:");  
  6.         for (User user : club.getUsers())  
  7.         {  
  8.             System.out.println(user.getName());  
  9.         }  
  10.         System.out.println("========================");  
  11.     }  

Club2代码

 

 

[java] view plaincopy
  1. public class Club2 {  
  2.     private Set<User> users = new LinkedHashSet<User>();  
  3.       
  4.     public Club2() {  
  5.         users.add(new User());  
  6.         users.add(new User());  
  7.         users.add(new User());  
  8.     }  
  9.       
  10.     public Set<User> getUsers() {  
  11.         return users;  
  12.     }  
  13.     public void setUsers(Set<User> users) {  
  14.         this.users = users;  
  15.     }  
  16. }  
 

 

 

jsp代码

[xhtml] view plaincopy
  1. <form action="test4.do" method="post">  
  2.         <div class="f_left">会员1号:</div>  
  3.         <div class="f_left">  
  4.         <input name="users[0].name" value="张三"/>  
  5.         </div>  
  6.         <div class="clear"></div>  
  7.         <div class="f_left">会员2号:</div>  
  8.         <div class="f_left">  
  9.         <input name="users[1].name" value="李四"/>  
  10.         </div>  
  11.         <div class="clear"></div>  
  12.         <div class="f_left">会员3号:</div>  
  13.         <div class="f_left">  
  14.         <input name="users[2].name" value="王五"/>  
  15.         </div>  
  16.         <div class="clear"></div>  
  17.         <div><input type="submit" value="提交表单"/></div>  
  18.     </form>  
 

 

 

5.Map类型绑定

最灵活的一种方式,可无限绑定未定义的参数,注意必须绑定在对象下(ActionForm).

controller代码

  1. @RequestMapping  
  2.     public void test5(UserForm userForm)  
  3.     {  
  4.         System.out.println("Map类型绑定=========");  
  5.         System.out.println("名字:" + userForm.getUser().get("name"));  
  6.         System.out.println("年龄:" + userForm.getUser().get("age"));  
  7.         System.out.println("收入:" + userForm.getUser().get("income"));  
  8.         System.out.println("已结婚:" + userForm.getUser().get("isMarried"));  
  9.         System.out.println("========================");  
  10.     }  
 

 

UserForm.java代码

  1. public class UserForm {  
  2.     private Map<String, String> userMap = new LinkedHashMap<String, String>();  
  3.     private User user = new User();  
  4.       
  5.     public Map<String, String> getUserMap() {  
  6.         return userMap;  
  7.     }  
  8.     public void setUserMap(Map<String, String> userMap) {  
  9.         this.userMap = userMap;  
  10.     }  
  11.     public User getUser() {  
  12.         return user;  
  13.     }  
  14.     public void setUser(User user) {  
  15.         this.user = user;  
  16.     }  
  17.       
  18. }  
 

 

jsp代码

 

[xhtml] view plaincopy
  1. <form action="test5.do" method="post">  
  2.         <div class="f_left">姓名:</div>  
  3.         <div class="f_left"><input name="user['name']" value="张三"/></div>  
  4.         <div class="clear"></div>  
  5.         <div class="f_left">年龄:</div>  
  6.         <div class="f_left"><input name="user['age']" value="20"/></div>  
  7.         <div class="clear"></div>  
  8.         <div class="f_left">收入:</div>  
  9.         <div class="f_left"><input name="user['income']" value="100000"/></div>  
  10.         <div class="clear"></div>  
  11.         <div class="f_left">结婚:</div>  
  12.         <div class="f_left">  
  13.         <input type="radio" name="user['isMarried']" value="true" checked="checked"/>是  
  14.         <input type="radio" name="user['isMarried']" value="false"/></div>  
  15.         <div class="clear"></div>  
  16.         <div><input type="submit" value="提交表单"/></div>  
  17.     </form>  
 

 

 

6.复合类型绑定

controller代码

  1. @RequestMapping  
  2.     public void test6(UserForm userForm)  
  3.     {  
  4.         System.out.println("复合类型绑定=========");  
  5.         System.out.println("名字:" + userForm.getUser().getName());  
  6.         System.out.println("年龄:" + userForm.getUser().getAge());  
  7.         System.out.println("收入:" + userForm.getUser().getIncome());  
  8.         System.out.println("已结婚:" + userForm.getUser().getIsMarried());  
  9.         System.out.println("========================");  
  10.     }  
 

 

UserForm代码

 

[java] view plaincopy
  1. public class UserForm {  
  2.     private Map<String, String> userMap = new LinkedHashMap<String, String>();  
  3.     private User user = new User();  
  4.       
  5.     public Map<String, String> getUserMap() {  
  6.         return userMap;  
  7.     }  
  8.     public void setUserMap(Map<String, String> userMap) {  
  9.         this.userMap = userMap;  
  10.     }  
  11.     public User getUser() {  
  12.         return user;  
  13.     }  
  14.     public void setUser(User user) {  
  15.         this.user = user;  
  16.     }  
  17.       
  18. }  
 

 

jsp代码

 

[xhtml] view plaincopy
  1. <form action="test6.do" method="post">  
  2.     <div class="f_left">姓名:</div>  
  3.     <div class="f_left"><input name="user.name" value="张三"/></div>  
  4.     <div class="clear"></div>  
  5.     <div class="f_left">年龄:</div>  
  6.     <div class="f_left"><input name="user.age" value="20"/></div>  
  7.     <div class="clear"></div>  
  8.     <div class="f_left">收入:</div>  
  9.     <div class="f_left"><input name="user.income" value="100000"/></div>  
  10.     <div class="clear"></div>  
  11.     <div class="f_left">结婚:</div>  
  12.     <div class="f_left">  
  13.     <input type="radio" name="user.isMarried" value="true" checked="checked"/>是  
  14.     <input type="radio" name="user.isMarried" value="false"/></div>  
  15.     <div class="clear"></div>  
  16.     <div><input type="submit" value="提交表单"/></div>  
  17. </form>  
 

 

分享到:
评论

相关推荐

    spring MVC数据绑定大全

    总结出以下几种情况 希望对刚接触spring mvc 的朋友有所帮助 "&gt;spring MVC数据绑定 含例子 转载自疯芒毕露的专栏 刚开始用spring mvc 做web开发时 经常会不知道如何合适绑定页面数据 用惯struts2的朋友更认为spring ...

    Spring Mvc参数传递例子

    Spring MVC传参是Spring学习中的比较容易混淆的地方,因为传参方式种类多,接受参数种类多,初学者较容易因为不懂HTTP参数传递原理,而摸不着头脑,该篇文章介绍Spring MVC参数绑定的几种方式。

    Spring MVC参数传递

    Spring MVC传参是Spring学习中的比较容易混淆的地方,因为传参方式种类多,接受参数种类多,初学者较容易因为不懂HTTP参数传递原理,而摸不着头脑,该篇文章介绍Spring MVC参数绑定的几种方式(包括json和普通文本)

    Spring开发指南

    依赖注入的几种实现类型 Type1 接口注入 Type2 设值注入 Type3 构造子注入 几种依赖注入模式的对比总结 Spring Bean封装机制 Bean Wrapper Bean Factory ApplicationContext Web Context Spring 高级...

    开源框架 Spring Gossip

    从代理机制初探 AOP 动态代理 &lt;br&gt;AOP 观念与术语 Spring AOP Advices Advices 包括了Aspect 的真正逻辑,由于缝合至Targets的时机不同,Spring 提供了几种不同的 Advices。 Before ...

    MYSQL数据库高级文档

    1:将所有的请求就几种到 DispatcherServlet web.xml配置 2:查询Spring.xml 并注册相应的对象 web.xml 3:将相应的请求绑定到相应的控制器 4:根据控制器解析数据并返回相应的视图模型 5:根据spring配置解析...

    spring web flow demo

    最新版本为 2.0 ,相比于 1.x 版的 Spring Web Flow ,有以下几个值得注意的新 特性。 • 与 Spring MVC 深度整合 Spring Web Flow 1.x 是个自成体系的框架,可与 Spring Web MVC 、 Struts 、 JSF 等 Web 框架整合...

    Spring in Action(第二版 中文高清版).part2

    5.1.1 了解Spring数据访问的异常体系 5.1.2 数据访问的模板化 5.1.3 使用DAO支持类 5.2 配置数据源 5.2.1 使用JNDI数据源 5.2.2 使用数据源连接池 5.2.3 基于JDBC驱动的数据源 5.3 在Spring里使用JDBC ...

    Spring in Action(第二版 中文高清版).part1

    5.1.1 了解Spring数据访问的异常体系 5.1.2 数据访问的模板化 5.1.3 使用DAO支持类 5.2 配置数据源 5.2.1 使用JNDI数据源 5.2.2 使用数据源连接池 5.2.3 基于JDBC驱动的数据源 5.3 在Spring里使用JDBC ...

    2011 经典 下载 spring中文教程(spring开发指南).pdf

    依赖注入的几种实现类型........................................................................................14 Type1 接口注入...........................................................................

    weixin基于微信小程序的商品展示+ssm(源码+SSM+小程序+vue).zip

    在技术层面,该项目主要使用了以下几种技术: Spring:这是一个开源的Java平台,它提供了一种全面的基础架构支持,用于开发Java应用程序。Spring处理了基础性的任务,使得开发者可以专注于应用程序级的功能。 ...

    java面试题

    多线程几种实现方法,同步? 答:多线程有两种实现方法,一种是继承Thread类或者实现Runnable接口。同步就是在方法返回类型后面加上synchronized。 c#中的委托,事件是不是委托? 答:委托就是将方法作为一个参数...

    java-ee电子商城系统课程设计.doc

    Spring作为核心,向上整合MVC框架,使用Spring的IoC容 器来管理各组件之间之间的依赖关系,Spring的声明事务将负责逻辑层组件的事务管理 。而Hibernate 提供了一个抽象的数据服务视图,将用户对数据库的访问进行高度...

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    领域驱动设计与模式实战

    第1章 应重视的价值,也是对过去几年的沉重反思 1.1 总体价值 1.2 应重视的架构风格 1.2.1 焦点之一:模型 1.2.2 焦点之二:用例 1.2.3 如果重视模型,就可以使用领域模型模式 1.2.4 慎重处理数据库 1.2.5 领域模型...

    asp.net知识库

    利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到基本存储过程生成 使用SQLDMO控制 SQL Server 使用SQL...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

Global site tag (gtag.js) - Google Analytics