您的位置:首页 > 编程语言 > Java开发

深度剖析: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

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐