`
bsmith
  • 浏览: 1391 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Java Bean属性读写

阅读更多
属性表达式
使用字符串名称来读取或设置对象属性的方式,使用“.”表示子属性,使用“[]”表示数组、图或者集合索引属性。

功能
支持多级属性
支持数组和容器索引属性
支持范型
支持字符串自动解析属性赋值
支持字符数组属性赋值

基本属性
public class Person
{
    private int value;
    public int getValue()
    {
       return value;
    }
    public void setValue(int value)
    {
       this.value = value;
    }
}
public class PersonSample
{
    public static void main(String ... args) throws Throwable
    {
       Person bean = new Person();
       Property.setProperty(bean, "value", 123);
       System.out.println(bean.getValue());
    }
}


子属性
public class Person
{
    private int value;
    public int getValue()
    {
       return value;
    }
    public void setValue(int value)
    {
       this.value = value;
    }
    private Person parent;
    public Person getParent()
    {
       return parent;
    }
    public void setParent(Person parent)
    {
       this.parent = parent;
    }
}
public class PersonSample
{
    public static void main(String ... args) throws Throwable
    {
       Person bean = new Person();
       Property.setProperty(bean, "parent.parent.value", 123);
       System.out.println(bean.getParent().getParent().getValue());
    }
}


数组属性
public class Person
{
	private int[] values;
	public int[] getValues()
	{
		return values;
	}
	public void setValues(int[] values)
	{
		this.values = values;
	}
	public static void main(String ... args) throws Throwable
	{
		Person bean = new Person();
		Property.setProperty(bean, "values[0]", 123);
		Property.setProperty(bean, "values[3]", 456);
		System.out.println(bean.getValues().length);
		for (int i = 0;i < bean.getValues().length;i ++)
		{
			System.out.println(bean.getValues()[i]);
		}
		System.out.println(Property.getProperty(bean, "values[3]"));
	}
}


容器属性
public class Person
{
	private ArrayList<String> values;
	public ArrayList<String> getValues()
	{
		return values;
	}
	public void setValues(ArrayList<String> values)
	{
		this.values = values;
	}
	public static void main(String ... args) throws Throwable
	{
		Person bean = new Person();
		Property.setProperty(bean, "values[0]", "123");
		Property.setProperty(bean, "values[3]", "456");
		System.out.println(bean.getValues().size());
		for (int i = 0;i < bean.getValues().size();i ++)
		{
			System.out.println(bean.getValues().get(i));
		}
		System.out.println(Property.getProperty(bean, "values[3]"));
	}
}


图属性
public class Person
{
	private HashMap<String, Double> values;
	public HashMap<String, Double> getValues()
	{
		return values;
	}
	public void setValues(HashMap<String, Double> values)
	{
		this.values = values;
	}
	public static void main(String ... args) throws Throwable
	{
		Person bean = new Person();
		Property.setProperty(bean, "values[abc]", 123.123);
		Property.setProperty(bean, "values[def]", 456.456);
		System.out.println(bean.getValues().size());
		Set<String> keys = bean.values.keySet();
		for (String key : keys)
		{
			System.out.println(bean.values.get(key));
		}
		System.out.println(Property.getProperty(bean, "values[abc]"));
	}
}


复杂范型
public class Person
{
	private double value;
	private Person parent;
	private LinkedList<ArrayList<HashMap<Date, Person[][]>>>[] values;
	public LinkedList<ArrayList<HashMap<Date, Person[][]>>>[] getValues()
	{
		return values;
	}
	public void setValues(LinkedList<ArrayList<HashMap<Date, Person[][]>>>[] values)
	{
		this.values = values;
	}
	public Person getParent()
	{
		return parent;
	}
	public void setParent(Person parent)
	{
		this.parent = parent;
	}
	public double getValue()
	{
		return value;
	}
	public void setValue(double value)
	{
		this.value = value;
	}
	public static void main(String ... args) throws Throwable
	{
		Person bean = new Person();
		Property.setProperty(bean, "values[0][1][2][2012-04-27][3][4].parent.value", 123.456);
		Property.setProperty(bean, "values[0][1][3][2012-04-27][4][5].parent.value", 456.789);
		System.out.println(Property.getProperty(bean, "values[0][1][2][2012-04-27][3][4].parent.value"));
		Date dt = Property.toDate("2012-04-27");
		System.out.println(bean.values[0].get(1).get(2).get(dt)[3][4].parent.value);
		System.out.println(Property.getProperty(bean, "values[0][1][3][2012-04-27][4][5].parent.value"));
	}
}


字符串赋值
public class Person
{
	private int value;
	public int getValue()
	{
		return value;
	}
	public void setValue(int value)
	{
		this.value = value;
	}
	public static void main(String ... args) throws Throwable
	{
		Person bean = new Person();
		Property.setValue(bean, "value", "123");
		System.out.println(bean.value);
		System.out.println(Property.getProperty(bean, "value"));
		Property.setValue(bean, "value", new String[]{"456", "789"});
		System.out.println(bean.value);
	}
}


字符数组赋值
public class Person
{
	private double[] values;
	public double[] getValues()
	{
		return values;
	}
	public void setValues(double[] values)
	{
		this.values = values;
	}
	public static void main(String ... args) throws Throwable
	{
		Person bean = new Person();
		Property.setValue(bean, "values", new String[]{"123.456", "456.789", "789.012"});
		System.out.println(bean.values.length);
		System.out.println(bean.values[1]);
		System.out.println(Property.getProperty(bean, "values[0]"));
		System.out.println(Property.getProperty(bean, "values[1]"));
		System.out.println(Property.getProperty(bean, "values[2]"));
	}
}


字符数组容器赋值
public class Person
{
	private ArrayList<Boolean> values;
	public ArrayList<Boolean> getValues()
	{
		return values;
	}
	public void setValues(ArrayList<Boolean> values)
	{
		this.values = values;
	}
	public static void main(String ... args) throws Throwable
	{
		Person bean = new Person();
		Property.setValue(bean, "values", new String[]{"1"});
		System.out.println(bean.values.size());
		System.out.println(Property.getProperty(bean, "values[0]"));
		Property.setValue(bean, "values", new String[]{"1", "0", "true", "false"});
		System.out.println(bean.values.size());
		System.out.println(Property.getProperty(bean, "values[0]"));
		System.out.println(Property.getProperty(bean, "values[1]"));
	}
}


表单解析
HTML表单
<form method="POST" action="myAction.do">
	<!-- 基本属性 -->
	<input type="text" name="user">
	<input type="password" name="pwd">
	<!-- 同名复选框,映射到Java Bean的数组 -->
	<input type="checkbox" name="fruits" value="apple">
	<input type="checkbox" name="fruits" value="orange">
	<input type="checkbox" name="fruits" value="banana">
	<input type="checkbox" name="fruits" value="mango">
	<!-- 多选子属性,映射到Java Bean的ArrayList -->
	<input type="text" name="children[0].user"><input type="password" name="children[0].pwd">
	<input type="text" name="children[1].user"><input type="password" name="children[1].pwd">
	<input type="text" name="children[2].user"><input type="password" name="children[2].pwd">
	<input type="submit" value="提交">
</form>

Java Bean
public class Person
{
	private String name;
	private String pwd;
	private String[] fruits;
	private ArrayList<Person> children;
	public String getName()
	{
		return name;
	}
	public void setName(String name)
	{
		this.name = name;
	}
	public String getPwd()
	{
		return pwd;
	}
	public void setPwd(String pwd)
	{
		this.pwd = pwd;
	}
	public String[] getFruits()
	{
		return fruits;
	}
	public void setFruits(String[] fruits)
	{
		this.fruits = fruits;
	}
	public ArrayList<Person> getChildren()
	{
		return children;
	}
	public void setChildren(ArrayList<Person> children)
	{
		this.children = children;
	}
}

解析
Enumeration<String> iter = (Enumeration<String>)request.getParameterNames();
Person bean = new Person();
while(iter.hasMoreElements())
{
	String key = iter.nextElement();
	String[] values = request.getParameterValues(key);
	Property.setValue(bean, key, values);
}


源代码
见附件
  • property.zip (11.9 KB)
  • 描述: 源代码和文档
  • 下载次数: 68
分享到:
评论

相关推荐

    xmlbean轻轻松松读写XML的利器

    ### XMLBean:轻松读写XML的强大工具 #### 一、XML的重要性与挑战 XML(Extensible Markup Language,可扩展标记语言)作为一种通用的数据格式,在Java应用程序中扮演着日益重要的角色。它广泛应用于数据存储和...

    根据json串自动生成JAVA BEAN工具

    JavaBean是Java编程中的一种设计模式,它代表一个对象,通常包含公共属性和方法,便于数据的封装和操作。在处理大量JSON数据时,手动创建对应的JavaBean类会非常耗时,因此出现了“根据json串自动生成JAVA BEAN工具...

    利用XMLBean轻轻松松读写XML-入门教程

    《利用XMLBean轻轻松松读写XML-入门教程》 一、XML的重要性与解析方法 在现代软件开发中,XML(可扩展标记语言)扮演着举足轻重的角色,尤其是在数据存储与交换方面。XML因其良好的结构化特性,被广泛应用于配置...

    XMLBean读写操作示例

    6. **实例分析**:在"XMLBeanTest2"这个文件中,很可能包含了一个演示如何使用XMLBean进行读写操作的Java程序。它可能包括了加载XSD,生成Java类,创建并填充对象,以及保存和读取XML文件的代码。通过研究这个示例,...

    利用XMLBean轻轻松松读写XML

    XMLBean是Apache软件基金会开发的一个Java库,它提供了一种高效、方便的方式来处理XML文档,包括XML的读取和写入。XMLBean是基于JavaBeans的,它将XML文档映射到Java对象,使得XML数据的操作更加直观和简单。本文将...

    用于实现JAVA树结构的BEAN

    Java Bean是一种遵循特定规范的Java类,它具有可读写的属性、无参数的构造器以及用于序列化和属性改变的通知方法,通常用于组件开发。 描述中提到的"用于实现JAVA树结构的BEAN"进一步强调了这个Java Bean是专门设计...

    java (bean) 生成图片

    这里的“java (bean) 生成图片”是指利用Java的类库和设计模式,如JavaBeans,来创建和操作图像。我们将深入探讨这个主题,首先了解JavaBeans规范,然后讨论如何使用Java生成图片,最后分析给定的两个源代码文件`...

    自动读取mysql数据库字段并自动生成java属性和set和get方法

    在压缩包子文件的文件名称列表中,"FieldToRead--属性读写"可能表示的是一个实现此功能的具体文件,或者是一个示例,用于展示如何读取数据库字段并生成Java属性的读写方法。该文件可能是代码示例、配置文件或者是...

    Bean复制的几种框架性能比较(Apache BeanUtils、PropertyUtils,Spring BeanUtils,Cglib BeanCopier

    它使用反射机制实现,通过getter和setter方法进行属性的读写。其优点在于简单易用,但缺点是在大量复制操作时性能较低,因为每次复制都需要进行反射调用。 PropertyUtils是Apache Commons BeanUtils的扩展,它增强...

    使用jsp和java.bean来构建一个网上书店

    - **set和get方法**:通过JSP表达式或脚本元素调用JavaBean的setter和getter方法,进行数据的读写。 - **动作指令**:如`jsp:setProperty`和`jsp:getProperty`,用于设置和获取JavaBean的属性值。 **4. 数据库连接...

    java Beans开发使用手册(PDG)

    3. **属性**:Java Beans的属性是其内部状态的表示,可以通过getter和setter方法进行读写。属性通常具有名称、类型和默认值。 4. **事件**:Java Beans可以发送和接收事件。事件处理允许组件之间进行通信,例如按钮...

    XML.rar_XML java_java call_java xml_xml 读写_xml读写 java

    在Java中,XML的处理分为解析、创建、修改和读写等关键操作。 首先,让我们深入了解XML的基本结构。XML文档由元素(Element)、属性(Attribute)、文本内容(Text Content)和注释(Comment)组成。元素是XML的...

    cn.rar_java xml to bea_java commonUt_xml to be_xml to bean

    1. 创建一个Java Bean类,定义其属性和getter/setter方法。 2. 使用`@XmlRootElement`注解标记Bean类,表示它是XML文档的根元素。 3. 对Bean类的属性使用`@XmlElement`注解,指示它们应被序列化为XML元素。 4. 调用...

    Java使用JavaBean封装和连接URL.rar

    在Java编程中,JavaBean是一种遵循特定规范的Java类,通常用于封装数据并提供属性访问。在本案例中,"Java使用JavaBean封装和连接URL"涉及到如何利用JavaBean来处理网络请求,尤其是通过URL来获取网络资源。下面将...

    Java与XML数据绑定

    在XML数据绑定中,Java Bean充当了数据模型的角色,其属性对应于XML文档中的元素或属性。 JAXB的核心功能包括: 1. **序列化**:将Java对象转换为XML文档。通过JAXBContext实例,我们可以获取Marshaller对象,然后...

    文件上传,java解析excel和csv 转javabean

    假设我们有一个Java Bean类`DataBean`,包含与CSV或Excel列名相对应的属性,我们可以创建一个静态方法,接收字符串数组作为参数,然后使用`Field`的`set()`方法将值赋给对应的属性。 ```java public static ...

    javabean基础教程

    - **属性和访问方法**:Bean的属性应私有化,通过getter和setter方法公开属性的读写操作。例如,属性名为`age`,对应的getter方法是`getAge()`,setter方法是`setAge(int age)`。 - **包命名**:Bean类应该放在一个...

    读取文件数据并解析成bean实体类

    例如,Java中的`java.io`包提供了`File`类用于文件的创建、删除和重命名,而`BufferedReader`和`BufferedWriter`则用于文本文件的读写。 2. **数据解析**:数据解析是将文件内容转换为可操作结构的过程。这可能涉及...

    java源码包---java 源码 大量 实例

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,...

Global site tag (gtag.js) - Google Analytics