實(shí)例解析JSP語(yǔ)法(10)
發(fā)布時(shí)間:2008-08-07 閱讀數(shù): 次 來(lái)源:網(wǎng)樂(lè)原科技
<jsp:useBean>
創(chuàng)建一個(gè)Bean實(shí)例并指定它的名字和作用范圍.
JSP 語(yǔ)法
<jsp:useBean
id="beanInstanceName"
scope="page | request | session | application"
{
class="package.class" |
type="package.class" |
class="package.class" type="package.class" |
beanName="{package.class | <%= expression %>}" type="package.class"
}
{
/> |
> other elements </jsp:useBean>
}
例子
<jsp:useBean id="cart" scope="session" class="session.Carts" />
<jsp:setProperty name="cart" property="*" />
<jsp:useBean id="checking" scope="session" class="bank.Checking" >
<jsp:setProperty name="checking" property="balance" value="0.0" />
</jsp:useBean>
描述
<jsp:useBean>用于定位或示例一個(gè)JavaBeans組件。<jsp:useBean>首先會(huì)試圖定位一個(gè)Bean實(shí)例,如果這個(gè)Bean不存在,那么<jsp:useBean>就會(huì)從一個(gè)class或模版中進(jìn)行示例。
為了定位或示例一個(gè)Bean,<jsp:useBean>會(huì)進(jìn)行以下步聚,順序如下:
通過(guò)給定名字和范圍試圖定位一個(gè)Bean.
對(duì)這個(gè)Bean對(duì)象引用變量以你指定的名字命名.
如果發(fā)現(xiàn)了這個(gè)Bean,將會(huì)在這個(gè)變量中儲(chǔ)存這個(gè)引用。如果你也指定了類(lèi)型,那么這個(gè)Bean也設(shè)置為相應(yīng)的類(lèi)型.
如果沒(méi)有發(fā)現(xiàn)這個(gè)Bean,將會(huì)從你指定的class中示例,并將此引用儲(chǔ)存到一個(gè)新的變量中去。如果這個(gè)class的名字代表的是一個(gè)模版,那么這個(gè)Bean被java.beans.Beans.instantiate示例.
如果<jsp:useBean>已經(jīng)示例(不是定位)了Bean,同時(shí)<jsp:useBean>和</jsp:useBean>中有元素,那么將會(huì)執(zhí)行其中的代碼.
<jsp:useBean>元素的主體通常包含有<jsp:setProperty>元素,用于設(shè)置Bean的屬性值。正如上面第五步所說(shuō)的,<jsp:useBean>的主體僅僅只有在<jsp:useBean>示例Bean時(shí)才會(huì)被執(zhí)行,如果這個(gè)Bean已經(jīng)存在,<jsp:useBean>能夠定位它,那么主體中的內(nèi)容將不會(huì)起作用
屬性以及用法
id="beanInstanceName"
在你所定義的范圍中確認(rèn)Bean的變量,你能在后面的程序中使用此變量名來(lái)分辨不同的Bean
這個(gè)變量名對(duì)大小寫(xiě)敏感,必須符合你所使用的腳本語(yǔ)言的規(guī)定,在Java
Programming Language中,這個(gè)規(guī)定在Java Language
規(guī)范已經(jīng)寫(xiě)明。如果這個(gè)Bean已經(jīng)在別的<jsp:useBean>中創(chuàng)建,那么這個(gè)id的值必須與原來(lái)的那個(gè)id值一致.
scope="page | request | session | application"
Bean存在的范圍以及id變量名的有效范圍。缺省值是page,以下是詳細(xì)說(shuō)明:
page - 你能在包含<jsp:useBean>元素的JSP文件以及此文件中的所有靜態(tài)包含文件中使用Bean,直到頁(yè)面執(zhí)行完畢向客戶端發(fā)回響應(yīng)或轉(zhuǎn)到另一個(gè)文件為止。
request - 你在任何執(zhí)行相同請(qǐng)求的Jsp文件中使用Bean,直到頁(yè)面執(zhí)行完畢向客戶端發(fā)回響應(yīng)或轉(zhuǎn)到另一個(gè)文件為止。你能夠使用Request對(duì)象訪問(wèn)Bean,比如request.getAttribute(beanInstanceName)
session - 從創(chuàng)建Bean開(kāi)始,你就能在任何使用相同session的Jsp文件中使用Bean.這個(gè)Bean存在于整個(gè)Session生存周期內(nèi),任何在分享此Session的Jsp文件都能使用同一Bean.注意在你創(chuàng)建Bean的Jsp文件中<%
@ page %>指令中必須指定session=true
application - 從創(chuàng)建Bean開(kāi)始,你就能在任何使用相同application的Jsp文件中使用Bean.這個(gè)Bean存在于整個(gè)application生存周期內(nèi),任何在分享此application的Jsp文件都能使用同一Bean.
class="package.class"
使用new關(guān)鍵字以及class構(gòu)造器從一個(gè)class中示例一個(gè)bean.這個(gè)class不能是抽象的,必須有一個(gè)公用的,沒(méi)有參數(shù)的構(gòu)造器.這個(gè)package的名字區(qū)別大小寫(xiě)。
type="package.class"
如果這個(gè)Bean已經(jīng)在指定的范圍中存在,那么寫(xiě)這個(gè)Bean一個(gè)新的數(shù)據(jù)庫(kù)類(lèi)型
。如果你沒(méi)有使用class或beanName指定type,Bean將不會(huì)被示例.package和class的名字,區(qū)分大小寫(xiě).
beanName="{package.class | <%= expression %>}" type="package.class"
使用java.beans.Beans.instantiate方法來(lái)從一個(gè)class或連續(xù)模版中示例一個(gè)Bean,同時(shí)指定Bean的類(lèi)型。
beanName可以是package和class也可以是表達(dá)式,它的值會(huì)傳給Beans.instantiate.tupe的值可以和Bean相同。
package 和 class 名字區(qū)分大小寫(xiě).