Tomcat與JavaWeb開發技術詳解JSP訪問JavaBean

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:setPropertyjsp: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")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章