JSP與JavaBeans

來源:互聯網
上載者:User

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。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.