文章目錄
JavaBean簡介
JavaBean是一種可重複使用的且跨平臺的軟件組織。
JavaBean可分爲兩種:一種是有用戶界面的JavaBean
,一種是負責表示業務數據或者處理業務的JavaBean
。
一個標準的JavaBean有以下幾個特性:
-
JavaBean是公共類。
-
JavaBean是一個不帶參數的構造方法。
-
JavaBean通過set方法設置屬性,get方法獲取屬性
屬性名和get方法之間存在固定的對應關係,如果屬性名爲"xyz",那麼get方法名爲getXyz();屬性名的第一個字母大寫,set()方法相同。
如果希望JavaBean能被持久化,那麼可以使它實現java.io.Serializeble接口。
JSP訪問JavaBean的語法:
1:導入JavaBean類
如果在JSP網頁中訪問JavaBean,首先要通過<%@ page import%>指令引入JavaBean類,例如:
<%@ page import ="mypack.CounterBean"%>
2:聲明JavaBean對象:
用jsp:useBean標籤來聲明JavaBean對象,例如:
<jsp:useBean id="myBean" class="mypack.CounterBean" scope="session" />
id屬性:代表JavaBean對象的ID,實際上表示引用JavaBean對象的局部變量,以及存放在特定範圍內的屬性名。JSP規範要求存放在所有範圍內的每個JavaBean對象都有唯一的ID
-
class屬性:用來指定JavaBean的類名
-
scope屬性:用來指定JavaBean對象的存放範圍,可選值包括:page(網頁範圍),request(請求範圍),session(會話範圍)和application(web應用範圍),默認爲page類型。
3.訪問JavaBean屬性:
JSP提供了訪問JavaBean屬性的標籤,如果要將JavaBean的某個輸出屬性輸出到頁面上,可以用jsp:getProperty標籤,例如:
<jsp:getProperty name="myBean" property="count"/>
等價於:
<%=myBean.getCount()%>
如果要給某個屬性賦值可以利用jsp:setProperty標籤
<jsp:setProperty name="myBean" property="count" value="1"/>
要注意的是:一個JSP文件通過jsp:setProperty或jsp:getProperty標籤訪問一盒JavaBean的屬性,要求JSP文件先通過jsp:useBean標籤聲明這個JavaBean,否則會拋出異常。
JavaBean的範圍
JavaBean在頁面(page)範圍內
<jsp:useBean id="myPageBean" scope="page" class="mypack.CounterBean">
以下兩個情況會結束生命週期:
-
客戶請求訪問的當前怕個Counter.jsp頁面執行完畢,接着通過jsp:forward標記請求轉發到另一個web組件。
-
客戶請求訪問的當前pageCounter.jsp頁面執行完畢並向客戶端發揮響應
JavaBean在請求範圍內
<jsp:useBean id="myPageBean" scope="request" class="mypack.CounterBean">
以下兩個情況會結束生命週期:
-
客戶請求訪問的當前requestCounter.jsp執行完畢並向客戶端發回響應。
-
客戶請求訪問的當前requestCounter.jsp把請求轉發requestCounter_2.jsp給執行完畢並向客戶端發回響應。
對於requestCounter.jsp文件中聲明的CounterBean對象,它可以被以下組件共享:
-
requestCounter.jsp文件本身
-
和requestCounter.jsp文件共享同一個客戶請求的Web組件以及轉發請求的其他Web組件
JavaBean在會話範圍內:
<jsp:useBean id="myPageBean" scope="session" class="mypack.CounterBean">
會話範圍內的JavaBean對象實際上是作爲屬性保存在HttpSession對象中的,其屬性名爲JavaBean的ID,屬性值爲JavaBean對象,因此可以通過HttpSession.getAttribute()方法讀取會話範圍內的JavaBean對象,例如:
CounterBean obj=(CounterBean)session.getAttribute("mySessionBean")
JavaBean在Web應用範圍內
<jsp:useBean id="myPageBean" scope="application" class="mypack.CounterBean">
Web應用範圍對應整個Web應用的聲明週期,處於同一個Web應用中的所有Web組件共享這個Web應用範圍內的JavaBean對象
CounterBean obj=(CounterBean)application.getAttribute("myapplicationBean")