起初,JavaBean的目的是为了将可以重复使用的代码进行打包,在传统的应用中,JavaBean主要用于实现一些可视化界面,如一个窗体、按钮、文本框等,这样的JavaBean称之可视化的JavaBean。
随着技术的不断发展与项目的需求,目前JavaBean主要用于实现一此业务逻辑或封装一些业务对象,由于这样的JavaBean并没有可视化的界面,所以又称之为非可视化的JavaBean。
可视化的JavaBean一般应用于Swing的程序中,在Java Web开发中并不会采用,而是使用非可视化的JavaBean,实现一此业务逻辑或封装一些业务对象,下面就通过实例来了解一下非可视化的JavaBean。
JavaBean 有广义的和狭义的两种概念。
广义的 JavaBean 是指普通的 Java 类;
狭义的JavaBean 是指严格按照 JavaBean 规范编写的 Java 类
使用JavaBean的好处:
可以使得JSP页面变得清晰;
节省软件开发时间(可以直接使用已经测试和可信的已有组件,避免了重复开发);
降低系统维护的难度
为JSP应用带来了更多的可伸缩性,使系统变得健壮和灵活。
JavaBean的分类
可视的JavaBean:传统的JavaBean应用于可视化界面(如java图形界面中使用的按钮、文本框或列表框等)。
非可视化的JavaBean:封装逻辑、封装数据,与JSP搭配使用。
JavaBean有以下特征(编写规范):
JavaBean是一个public类
一定使用了package语句进行打包,并且声明的打包路径非sun公司声明使用的路径。
有一个无参数的构造方法
属性一般是私有的(即用private修饰),以保证数据的完整性和封装性
对属性值的获取有相应的getXxx()方法,并且此方法是公有的(即用public修饰)若要获取的属性为boolean类型则可以使用isXxx()方法
对属性值的设置有相应的setXxx()方法,并且此方法也是公有的(即用public修饰)
package bean;
public class SimpleBean{
private String name;
private int number;
public SimpleBean(){ }
public void setName(String name){
this.name = name;
}
public void setNumber(int number){
this.number = number;
}
public String getName(){
return name;
}
public int getNumber(){
return number;
}
}
编写JavaBean时,需要将其放入某个包中,这样才能被JSP页面访问到
保存JavaBean存JavaB
第1步:一个JavaBean编写完以后,需要将它编译成“.class”文件。
第2步:并将此“.class”文件放到本次应用的WEB-INF\classes目录之下,并且需要根据Bean的包名,在classes下再建立相应的子目录。
例如:package ch7.test 则该bean的.class文件需要放置在“WEB-INF\classes\ch7\test”中
使用JavaBean
第1步:在 JSP页面中通过import指令引入bean
格式:<%@ page import=”ch7.test.*”%>
第2步:通过useBean标记来创建bean对象
格式:
<jsp:useBean id=”bean_name” class=”创建bean的类” scope=”bean的有效范围“> </jsp:useBean>
或 <jsp:useBean id=”bean_name” class=”创建bean的类” scope=”bean的有效范围” />
其中:1.创建bean的类要带有完整的包名,如ch7.test.Circle
2.scope表示bean的取值范围,可取page,session,request和application,代表不同的作用范围。
第3步,在jsp页面中,可以通过直接调用bean的方法来获取和修改bean的属性值,还可以通过jsp动作标记来获取和修改bean的属性。
直接调用bean的方法:girl.setradius(100)等。
动作标签方法:<jsp:getProperty>和<jsp:setProperty>
<jsp:useBean id=“beanname” class=“package.class” [scope=“page|request|session|application”] />
(1). <jsp:setProperty name=“beanName”
property=“propertyName”
value=“propertyValue” />
用来为bean的属性赋值
其中name指出是在操作哪个bean,property指出对该bean的哪个属性赋值,value用来指定给属性赋的值。
例:<jsp:setProperty name="myBean" property="sample" value="Hello,JSP"/>
property=“propertyName”
param=“paramName” />
<jsp:getProperty name=“beanname”
property=“propertyname” />
name指出了要获取哪个bean的属性值,
property指出要获取该bean的哪个属性值
例:<jsp:getProperty name="myBean" property="sample"/>
中class的值要与bean的类名相同,id作为对象名,可任取
中name的值要与useBean中的id的值相同,propertyname要与bean的属性名相同
property=“propertyName” value=“propertyValue” />中的name的值要与useBean中的id的值相同,propertyname要与bean的属性名相同。
property=“propertyName”/>中,form表单中的参数名、 propertyName和bean中属性名三者要相同
7.2 JavaBean的应用