javaBean

JavaBean是一種可重復(fù)使用、且跨平臺的軟件組件。
JavaBean可分為兩種:一種是有用戶界面(UI,User Interface)的JavaBean;
還有一種是沒有用戶界面的,主要負(fù)責(zé)處理事務(wù)(如數(shù)據(jù)運(yùn)算,操縱數(shù)據(jù)庫)的JavaBean。JSP通常訪問的是后面一種JavaBean。

MVC設(shè)計(jì)模式:(model view controller)
【模型視圖控制器】

JavaBean的特征:
——JavaBean是一個(gè)公共類
——JavaBean有一個(gè)不帶參數(shù)的構(gòu)造方法
——通過setter和getter分別來設(shè)置和獲取屬性值。

這樣子可以成功地通過反射來調(diào)用JavaBean的方法。

jsp訪問JavaBean的語法:
1、導(dǎo)入JavaBean類
<%@page import="mypackage.counterBean"%>
2、聲明JavaBean的對象
<jsp:useBean id="myBean" class="mypackage.counterBean" scope="session"></jsp:useBean>

也可以直接用java代碼:
<%counterBean myBean = new counterBean();%>

3、訪問JavaBean的對象
把JavaBean count屬性輸出到屏幕中,注意name要和聲明JavaBean對象的id一致。
<jsp:getProperty name="myBean" proerty="count"/>
同理用java代碼:
<%=myBean.geCount()%>

4、可以通過下面語句把JavaBean的count屬性賦值
<jsp:setProperty name="myBean" property="count" value="0"/>
<%information.setCount(0);%>
和getProerty的不同是多了value的值。
value后面的字符串會被編譯器自動(dòng)轉(zhuǎn)換成目標(biāo)需要的類型。
動(dòng)態(tài)賦值時(shí)可以用param,但是param與value不可以共存。param的賦值其實(shí)是由請求的數(shù)據(jù)賦值的。
假定前一個(gè)頁面request傳來HelloWorld=50,
param=“HelloWorld”等價(jià)request.getParameter(“HelloWorld”);
<jsp:getProperty name="Person" property="age" param="HelloWorld"/>
會打印50、

JavaBean的屬性以及用法:
id = "beanInstanceName
在所定義的范圍中確認(rèn)Bean的變量,使之能在后面的程序中使用此變量名來分辨不同的Bean,這個(gè)變量名也是對大小寫敏感的,必須符合所使用的腳本語言的規(guī)定。

如果Bean已經(jīng)在別的<jsp:useBean>中已經(jīng)創(chuàng)建,則當(dāng)使用這個(gè)已經(jīng)創(chuàng)建過的Bean時(shí),id的值必須相等,否則意味著創(chuàng)建了同一個(gè)類的兩個(gè)不同對象。

Scope屬性決定了JavaBean對象的存在范圍。scope的可選值包括:

——page(默認(rèn)值,當(dāng)前頁面)
客戶每次請求jsp頁面時(shí),都會創(chuàng)建新的JavaBean對象。
即一下兩種情況都會結(jié)束生命期:
客戶請求訪問的當(dāng)前的jsp網(wǎng)頁通過forward標(biāo)記請求轉(zhuǎn)發(fā)到另外一個(gè)文件;
客戶請求訪問的當(dāng)前jsp頁面執(zhí)行完畢后并向客戶端發(fā)回響應(yīng)。

——request(可以被轉(zhuǎn)發(fā)到下一個(gè)頁面)
客戶每次請求jsp頁面時(shí),都會創(chuàng)建新的JavaBean對象。
有效范圍:(1)客戶請求訪問的當(dāng)前頁面
(2)和當(dāng)前jsp頁面共享同一個(gè)客戶請求的網(wǎng)頁,即當(dāng)前jsp網(wǎng)頁中%@include指令和<forward>標(biāo)記包含的其他jsp文件
結(jié)束生命周期:當(dāng)所有共享同一個(gè)客戶請求的jsp頁面執(zhí)行完畢并向客戶端發(fā)回響應(yīng)時(shí)結(jié)束。
假設(shè)在jsp1頁面:<jsp:userBean id="person" class="www.Person" scope="request"/>
jsp2可以通過getAttribute來獲取javaBean對象:

out.print(p.getAge())%>```

——session
JavaBean對象被創(chuàng)建后,它存在于整個(gè)Session的生命周期內(nèi),同一個(gè)Session中的JSP文件共享這個(gè)JavaBean對象。
JavaBean對象作為屬性保存到HttpSession對象中,屬性名為JavaBean的id,屬性值為JavaBean對象。除了可以通過JavaBean的id引用JavaBean對象外,也可以通過HttpSession.getAttribute()方法取得JavaBean對象,例如:
```Person p = (Person)session.getAttribute("person");```

——application
JavaBean對象被創(chuàng)建后,它存在于整個(gè)WEb應(yīng)用的生命周期內(nèi),Web應(yīng)用中的所有jsp文件都能共享同一個(gè)JavaBean對象。
和其他的scope值一樣,也是有兩種訪問方式,一種是根據(jù)JavaBean的id或者用方法(Person)application.getAttribute("person")來訪問JavaBean對象。

*記得把對象強(qiáng)制轉(zhuǎn)換*

記住JavaBean必須遵守特定的規(guī)范,比如Person的age屬性,必須提供getCount()和setCount()方法,而不能隨心所欲定義其他如insertcount()等其他名字的原因是:
>當(dāng)所有JavaBean遵守相同額規(guī)范,<jsp:getProperty>和<jsp:setProperty>標(biāo)記就能夠自動(dòng)根據(jù)JavaBean的屬性來推斷出它的get和set方法。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容