大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

JSP教程
JSP高級教程

JSP useBean的標準動作

<jsp:useBean>動作標記用于在 JSP 頁面中創建 bean 實例,并且通過設置相關屬性,可以將該實例存儲到指定的范圍。如果在指定的范圍已經存在該 bean 實例,那么將使用這個實例,而不會重新創建。

實際工程中,常用 JavaBean 做組件開發,而在 JSP 頁面中,只需要聲明并使用這個組件,較大程度地實現了靜態內容和動態內容的分離。

聲明 JavaBean 的語法格式如下:

<jsp:useBean id="變量名" scope="page|request|session|application"
{
type="數據類型"
|class="package.className"
|class="package.className" type="數據類型"
|beanName="package.className" type="數據類型"
}
/>
<jsp:setProperty name="變量名" property="*" />

也可以在標記體內嵌入子標記,例如:

<jsp:useBean id="變量名" scope="page|request|session|application"...>
<jsp:setProperty name="變量名" property="*" />
</jsp:useBean>

以上兩種使用方法是有嚴格區別的,當在頁面中使用<jsp:useBean>標記創建一個 bean 時,對于第二種使用格式,如果該 bean 是第一次被實例化,那么標記體內的內容會被執行;如果已經存在指定的 bean 實例,則標記體內的內容就不再被執行。

對于第一種使用格式,無論在指定的范圍內是否己經存在指定的 bean 實例, <jsp:useBean>標記后面的內容都會被執行。

下面對<jsp:useBean>動作中各屬性的用法進行詳細介紹。

1、id 屬性:在 JSP 中給這個 bean 實例取的名字,即指定一個變量,只要在它的有效范圍內,均可使用這個名稱來調用它。該變量必須符合 Java 中變量的命名規則。

2、scope 屬性:設置所創建的 bean 實例的有效范圍,取值有 4 種:page、request、session、application。默認情況下取值為 page。

• 值為 page:在當前 JSP 頁面及當前頁面以 include 指令靜態包含的頁面中有效。

• 值為 request:在當前的客戶請求范圍內有效。在請求被轉發至的目標頁面中,如果要使用原貢面中創建的 bean 實例,通過 request 對象的 getAttribute("id屬性值") 方法來獲取。請求的生命周期是從客戶端向服務器發出請求開始,到服務器響應這個請求給用戶后結束。所以請求結束后,存儲在其中的 bean 實例也就失效了。

• 值為 session:對當前 HttpSession 內的所有頁面都有效。當用戶訪問 Web 應用程序時,服務器為用戶創建一個 session 對象,并通過 session 的 ID 值來區分不同的用戶。針對某一個用戶而言,對象可被多個頁面共享。通過 session 對象的 getAttribute(“id屬性值”) 方法獲取存儲在 session 中的 bean 實例。

 • 值為application:所有用戶共享這個bean實例。有效范圍從服務器啟動開始,到服 務器關閉結束。application對象是在服務器啟動時創建的,可以被多個用戶共享。所以,訪 問application對象的所有用戶共享存儲于該對象中的bean實例。使用application對象的 getAttribute(“id屬性值”)方法獲取存在于application對象中的bean實例。

Scope屬性之所以很重要,是因為只有在不存在具有相同id和scope的對象時, <8卩:!^86&11>才會實例化新的對象;如果已有id和scope都相同的對象,則直接使用已有的 對象,此時,jspruseBean開始標記和結束標記之間的任何內容都將被忽略。

3、 type="數據類型":設置由 id 屬性指定的 bean 實例的類型。該屬性可指定要創建實例的類的本身、類的父類或者一個接口。

通過 type 屬性設置 bean 實例類型的格式如下:

<jsp:useBean id="stu" type="com.Bean.StudentInfo" scope="session" />

如果在 session 范圍內,名為 stu 的實例已經存在,則將該實例轉換為 type 屬性指定的 StudentInfo 類型(此時的類型轉換必須是合法的)并賦值給 id 屬性指定的變量;若指定的實例不存在,將會拋出“bean stu not found within scope”異常。

4、class="package.className":該屬性指定了一個完整的類名,其中,package 表示類包的名字,className 表示類的 class 文件名稱。

通過 class 屬性指定的類不能是抽象的,它必須具有公共的、沒有參數的構造方法。在沒有設置 type 屬性時,必須設置 class 屬性。例如,通過 class 屬性定位一個類的格式如下:

<jsp:useBean id="stu" class="com.Bean.StudentInfo" scope="session" />

程序首先會在 session 范圍中查找是否存在名為 stu 的 StudentInfo 類的實例,如果存在,就會通過 new 操作符實例化 StudentInfo 類來獲取一個實例,并以 stu 為實例名稱存儲在 session 范圍內。

5、class="package.className" type="數據類型":class 屬性與 type 屬性可以指定同一個類,這兩個屬性一起使用時的格式舉例說明如下:

<jsp:useBean id="stu" class="com.Bean.StudentInfo" type="com.Bean.StudentBase" scope="session" />

6、beanName="package.className" type="數據類型":beanName 屬性與 type 屬性可以指定同一個類,這兩個屬性一起使用時的格式舉例說明如下:

<jsp:useBean id="stu" beanName="com.Bean.StudentInfo" type="com.Bean.StudentBase" />

假設 StudentBase 類為 StudentInfo 類的父類。執行到該標記時,首先,程序會創建一個以 id 屬性值為名稱的變量 stu,類型為 type 屬性的值,并初始化為 null;然后在 session 范圍內查找名為 stu 的 bean 實例。

如果實例存在,則將其轉換為 type 屬性指定的 StudentBase 類型(此時的類型轉換必須是合法的)并賦值給變量 stu;如果實例不存在,則將通過 instantiate() 方法,從 StudentInfo 類中實例化一個類,并將其轉換成 StudentBase 類型后賦值給變量 stu,最后將變量 stu 存儲在 session 范圍內。

一般情況下,使用如下格式來應用 標記:

<jsp:useBean id="變量名" class="package.className" />

如果多個頁面中共享這個 bean 實例,可將 scope 屬性設置為 session。

使用<jsp:useBean>標記在頁面中實例化 bean 實例后,設置或修改該 bean 中的屬性就可以用<jsp:setProperty>完成,讀取該 bean 中指定的屬性要用<jsp:getProperty>來完成,這兩個標記在下面小節中將陸續介紹。

當然,讀取和設置 bean 中的屬性還有另一種方式,就是在腳本程序中利用 id 屬性所命名的對象變量,通過調用該對象的方法顯式地讀取或者修改其屬性。

全部教程
主站蜘蛛池模板: 91在线欧美 | 性生活国产| 婷婷五月情 | 日本伊人色综合网 | 亚洲精品久久久久综合91 | 香蕉成人国产精品免费看网站 | 在线成人aa在线看片 | 精品国产一区二区三区四 | 99色视频在线 | 亚洲国产精品久久久久网站 | 99热久久国产精品一区 | 女人隐私秘视频黄www免费 | 色姑娘桃花网 | 精品国产一区二区三区www | 四虎成人国产精品视频 | 五月情婷婷| 国产日产欧美精品 | 男任天堂2021 | 日本免费一区二区三区在线看 | 黄 色 免费网 站 成 人 | 神马老子不卡视频在线 | 九九影院理论片 | 日韩国产欧美精品综合二区 | 日本在线亚州精品视频在线 | 黄页网站 播放器 日本 | 毛片一级在线观看 | 在线亚洲欧美 | 性生活免费视频网站 | 国产亚洲玖玖玖在线观看 | 九九热在线免费视频 | 在线观看国产精美视频 | 麻豆精品| 亚洲综合久 | 亚洲一区二区三区福利在线 | 国产区视频 | 亚洲久久网| 美女在线视频观看影院免费天天看 | 日韩免费小视频 | 亚州在线播放 | 日韩毛片在线免费观看 | 日韩欧美毛片免费观看视频 |