1. 使用 beans
為了在JSP 頁面中使用benas,我們必須使用JSP 動作標籤:useBean
useBean 格式:
<jsp:useBean id= “給bean 起的名字” class= “建立beans 的類”scope= “bean 有效範圍”></jsp:useBean>
當伺服器上某個含有 useBean 動作標籤的JSP 頁面被載入執行時,JSP 引擎將首先根據id 的名字,在一個同步塊中,尋找JSP 引擎內建pageContent 對象中是否含有名字id 和範圍scope 的對象,如果這個對象存在,JSP 引擎就分配一個這樣的對象給客戶,如果在pageContent 中沒有尋找到指定範圍、名字是id 的對象,就根據class指定的類建立一個名字是id 對象,即建立了一個名字是id 的beans,並添加到pageContent 內建對象中,並指定該beans 的範圍是scope,同時JSP 引擎分配給客戶一個範圍是scope、名字是id 的beans。
useBean 標籤中scope 取值的不同情況闡述如下:
scope 取值page
JSP 引擎分配給每個客戶的beans 是互不相同的,也就是說,儘管每個客戶的beans 的功能相同,但它們佔有不同的記憶體空間。該beans的有效範圍是當前頁面,當客戶離開這個頁面時,JSP 引擎取消分配給該客戶的beans。
scope 取值session
JSP 引擎分配給每個客戶的beans 是互不相同的,該beans 的有效範圍是客戶的會話期間,也就是說,如果客戶在多個頁面中相互串連,每個頁面都含有一個useBeans 標籤,這些useBean 標籤中id 的值相同,並且scope 的值都是session,那麼,該客戶在這些頁面得到的beans 是相同的一個。如果客戶在某個頁面更改了這個beans 的屬性,其它頁面的這個beans 的屬性也將發生同樣的變化。當客戶關閉瀏覽器時,JSP 引擎取消分配給客戶的beans。
scope 取值request
JSP 引擎分配給每個客戶的beans 是互不相同的,該beans 的有效範圍是request 期間。客戶在網站的訪問期間可能請求過多個頁面,如果這些頁面含有socope 取值是request 的useBeans 標籤,那麼pageCotent 對象在每個頁面分配給客戶的beans 也是互不相同的。JSP引擎對請求作出響應之後,取消分配給客戶的這個beans。
scope 取值application
JSP 引擎為每個客戶分配一個共用的beans,也就是說,所有客戶共用這個beans,如果一個客戶改變這個beans 的某個屬性的值,那麼所有客戶的這個beans 的屬性值都發生了變化。這個beans 直到伺服器關閉才被取消。
註:當使用範圍是session 的beans 時,要保證用戶端支援Cookie.
為了使伺服器的所有web 服務類別目錄下的JSP 分頁檔都能使用我們的beans,我們必須將上面編譯通過產生的位元組碼類檔案:Circle.class 拷貝到JSP 引擎的classes 檔案夾下, 即D:tomcat\Jakarta-tomcat-4.0\classes 下,另外,在使用 beans 的JSP 頁面中,必須有如下的import 指令:<@page import= “Circle”> 如果想讓某個 beans 只對examples 目錄下的JSP 頁面可用,那麼建立該beans 的位元組碼檔案需存放在webapps/example/Web-inf/classes目錄中,
2.擷取和修改 beans 的屬性
當我們使用useBean 動作標籤建立一個beans 後,在java 程式片中這個beans 就可以調用方法產生行為,比如修改屬性。擷取或修改beans 的屬性還可以使用動作標籤getProperty、setProperty
2.1getProperty 動作標籤
使用該標籤可以獲得beans 的屬性值,並將這個值用串的形式顯示給客戶
getProperty 動作標籤:
<jsp:getProperty name= “beans 的名字” property= “beans 的屬性” /></jsp:getProperty>
其中,name 取值是beans 的名字,用來指定要擷取哪個beans 的屬性的值;property 取值是該beans 的一個屬性的名字。該指令的作用相當於在程式片中使用beans 調用getXxx()方法。
2.2 setProperty 動作標籤
使用該標籤可以設定beans 的屬性值。
setProperty 動作標籤可以通過3 種方式設定beans 屬性的值。
(1)將benas 屬性的值設定為一個運算式的值或字串。
本欄目更多精彩內容:http://www.bianceng.cn/webkf/JSP/
benas 屬性的值設定為一個運算式的值:<jsp:setProperty name=“beans 的名字” property= “beans 的屬性” value= “<%=expression%>” />
benas 屬性的值設定為一個字串:<jsp:setProperty name=“beans 的名字” property= “beans 的屬性” value=字串 />
(2)使用setProperty 設定beans 屬性值的第2 種方式是:
通過HTTP 表單的參數的值來設定beans 的相應屬性的值,要求表單參數名字必須與beans 屬性的名字相同,JSP 引擎會自動將字串轉換為beans 屬性的類型。
<jsp:setProperty name= "beans 的名字" property="*" />
該標籤不用再具體指定 beans 屬性的值將對應表單中哪個參數指定的值,系統會自動根據名字進行般配對應。
(3)使用setProperty 設定beans 屬性值的第3 種方式是:
通過request 的參數的值來設定beans 的相應屬性的值,要求request 參數名字必須與beans 屬性的名字相同,JSP 引擎會自動將request 擷取的
字串資料型別轉換為beans 相應的屬性的類型。
<jsp:setProperty name= "beans 的名字" property=" 屬性名稱" param= “參數名” />
註:需要注意的是,只有提交了和該beans 相對應的表單後,該指令標籤才被執行。
註:不能在<jsp:setProperty>中同時使用value 和param。