深度剖析:Java POJO Bean 对象与 Web Form 表单的自动装配
2012-02-16 12:12
381 查看
时下很多 Web 框架 都实现了 Form 表单域与 Java 对象属性的自动装配功能,该功能确实非常有用,试想如果没这功能则势必到处冲积着 request.getParameter() 系列方法与类型转换方法的调用。重复代码量大,容易出错,同时又不美观,影响市容。
现在的问题是,这些框架通过什么方法实现自动装配的?如果不用这些框架我们自己如何去实现呢?尤其对于那些纯 JSP/Servlet 应用,要是拥有自动装配功能该多好啊!本座深知各位之期盼,决定把自动装配的原理和实现方法娓娓道来。
实现原理其实比较简单,主要由以下3个步骤构成:
通过 request.getParameterMap() 获取被提交的 Form 的所有表单域的名称-值映射,其中名称和值均为字符串类型。
利用 java.beans.PropertyDescriptor 对象获取 Java Bean 的所有属性的名称及其类型。
把表单域的名称与 Bean 的属性的名称逐个进行匹配,当找到相匹配的属性时就调用 Bean 的 setter 方法把表单域的值设置给该 Bean 属性。当然,因为表单域的值总是字符串类型,很可能与 Bean 属性的类型不一致,所以在设置 Bean 属性前要进行必要的类型转换。
上面所表述的3点原理不知大家是否完全理解,没关系,下面我们通过一个具体的表单提交的例子来看一看实际的效果,首先看看待提交的表单页面及其代码:
View Code
老规矩,想看完整代码者请轻轻 Touch 一下: Source Code ^_^
CodeProject
现在的问题是,这些框架通过什么方法实现自动装配的?如果不用这些框架我们自己如何去实现呢?尤其对于那些纯 JSP/Servlet 应用,要是拥有自动装配功能该多好啊!本座深知各位之期盼,决定把自动装配的原理和实现方法娓娓道来。
实现原理其实比较简单,主要由以下3个步骤构成:
通过 request.getParameterMap() 获取被提交的 Form 的所有表单域的名称-值映射,其中名称和值均为字符串类型。
利用 java.beans.PropertyDescriptor 对象获取 Java Bean 的所有属性的名称及其类型。
把表单域的名称与 Bean 的属性的名称逐个进行匹配,当找到相匹配的属性时就调用 Bean 的 setter 方法把表单域的值设置给该 Bean 属性。当然,因为表单域的值总是字符串类型,很可能与 Bean 属性的类型不一致,所以在设置 Bean 属性前要进行必要的类型转换。
上面所表述的3点原理不知大家是否完全理解,没关系,下面我们通过一个具体的表单提交的例子来看一看实际的效果,首先看看待提交的表单页面及其代码:
View Code
package test; import java.util.Date; class A { private boolean b; public boolean isB() { return b; } public void setB(boolean b) { this.b = b; } } public class C extends A { static int si; final int fi = 100; private int i; private Double l; private Date dt; private String str; private int[] ia; private String[] sa; public String[] getSa() { return sa; } public void setSa(String[] sa) { this.sa = sa; } public static int getSi() { return si; } public static void setSi(int si) { C.si = si; } public int getFi() { return fi; } public String getStr() { return str; } public void setStr(String str) { this.str = str; } public int[] getIa() { return ia; } public void setIa(int[] ia) { this.ia = ia; } public int getI() { return i; } public void setI(int i) { this.i = i; } public Double getL() { return l; } public void setL(Double l) { this.l = l; } public Date getDt() { return dt; } public void setDt(Date dt) { this.dt = dt; } }
老规矩,想看完整代码者请轻轻 Touch 一下: Source Code ^_^
CodeProject
相关文章推荐
- 深度剖析:Java POJO Bean 对象与 Web Form 表单的自动装配
- 深度剖析:Java POJO Bean 对象与 Web Form 表单的自动装配
- 深度剖析:Java POJO Bean 对象与 Web Form 表单的自动装配
- 深度剖析:Java POJO Bean 对象与 Web Form 表单的自动装配
- Java POJO Bean 对象与 Web Form 表单的自动装配
- Jsp/Servlet根据请求参数自动填充Java对象:表单Bean
- 11级_Java_曹建波 05.06 Spring的autowire自动装配bean的四种方式
- Spring学习(16)--- 基于Java类的配置Bean 之 基于泛型的自动装配(spring4新增)
- spring boot 自动装配 及xstream XML转为JAVA对象注意补充:xstream.setClassLoader(this.getClass().getClassLoader());
- [置顶] JAVA动态对象装配实现 测试--初步实现bean的set/get功能
- Java乔晓松-spring自动装配Bean的4种方式
- 9.笔记JAVA框架学习——Bean自动装配
- 用BeanUtils类自动封装表单数据到javabean
- [Java] Spring 3.0 /id.vs.name/简单属性的注入/bean中的scope属性/集合注入/自动装配/生命周期/
- [Java] Spring 3.0 /id.vs.name/简单属性的注入/bean中的scope属性/集合注入/自动装配/生命周期/
- 第36天(就业班) spring引入、专业术语、spring六大模块、bean创建对象的细节、IOC容器、对象依赖关系、自动装配、注解方式
- JavaWeb项目获取Spring自动装配的Bean对象
- java程序员面试必备之spring中bean的自动装配
- java spring - 自动装配Bean 注解大全
- 用spring的注解建立bean与bean之间的关系组件装配及自动注入依赖对象