JavaBean和EL表达式
什么是JavaBean
JavaBean是Java开发语言中一个可以重复使用的软件组件,它本质上就是一个Java类。
为了规范JavaBean的开发,Sun公司发布了JavaBean的规范,它要求一个标准的JavaBean组件需要遵循一定的编码规范,具体如下。
它必须具有一个公共的、无参的构造方法,这个方法可以是编译器自动产生的默认构造方法它提供公共的 setter方法和getter方法,让外部程序设置和获取JavaBean的属性。为了让读者对 JavaBean 有一个直观上的认识,接下来编写一个简单的JavaBean。首先在Eclipse 中创建一个名为 chapter07 的 Web 项目,然后在项目的SrC目录下创建名为cn.itcast.chapter07.javabean的包,再在该包下创建Book类,代码如下所示。
package cn.itcast.chapter07;
public class Book {
private double price;
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price =price;
}
}
访问Javabean的属性
在讲解面向对象时,经常会使用类的属性,类的属性指的是类的成员变量。在JavaBean 中同样也有属性,但是它和成员变量不是一个概念,它是以方法定义的形式出现的,这些方法 必须遵循一定的命名规范。
类的成员变量和属性的一个关系:
在普通的java类里面,成员变量可以说成就是属性。
在JavaBean里面,成员变量和属性就有了区别。
在JavaBean 里面的成员变量 private String id; 那么id就是成员变量
在JavaBean 的属性就是get或者set后面的字段名称(字段名称的首字母小写),就是属性。
比如:
public class Student {
//一下就是javaBean的四个成员变量
private String sid;//目的就是为了接收外界传递过来的值
private String name;
public Student() {
}
//属性由get或者set方法后面的字段首字母小写就是属性,属性就是id
public String getId() {
return sid;
}
public void setId(String id) {//写方法,给student写一个id
this.sid = id;
}
//属性就是name
public void setName(String name) {
this.name = name;
}
}
BeanUtils 工具
大多数Java程序开发人员过去习惯于创建JavaBean,然后通过调用JavaBean 属性对的getter和setter方法来访问属性。但是,由于各种Java工具和框架层出不穷,并不能保正性对应的getter和seter方法总能被调用,因此,动态访问Java对象的属性是十分必要的。此,Apache软件基金会提供了一套简单、易用的API——BeanUtils工具。掌握它的使用将有助于提高程序的开发效率。本节将针对BeanUtils工具的相关知识进行详细的讲解。
截止到目前,BeanUtils的最新版本为Apache Commons BeanUtils 1.9.x,读者可以根据需要下载相应的版本。BeanUtils 工具包的官网首页地址为“http://commons.apache.org/propercommons-beanutils”,登录到官网首页后,单击左边菜单栏【BEANUTILS】→【Download】选项,即可跳转到BeanUtils的下载页面.
然后
(1)在chapter07项目的lib 目录中添加已下载的commons-beanutils- 1.9.2.jar和Logging的JAR包commons -logging-1.2.jar,并将这两个JAR包发布到类路径中。
(2)在项目的src 目录下创建一个名为cn.itcast.chapter07 的包,在包下创建Person类,Person类中定义了name和age两个属性,并提供了对应的getter方法和setter方法供外界访问这两个属性,具体代码如图下所示:
package cn.itcast.chapter07;
public class Person {
private String name;private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;}
public void setAge(int age) {
this.age = age;
}
public Person() {
super();
}
public String toString() {
return"Person[name="+name +",age="+ age