?????? 起初,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的應用