IT兄弟連 JavaWeb教程 JSP訪問JavaBean

  • 2019 年 10 月 5 日
  • 筆記

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/ITXDL123/article/details/90089801

在JSP網頁中,既可以通過程式程式碼來訪問JavaBean,也可以通過特定的JSP標籤來訪問JavaBean。採用後一種方法,可以減少JSP網頁中的程式程式碼,使他更接近與HTML頁面。下面介紹訪問JavaBean的JSP標籤。

1.導入JavaBean類

如果在JSP網頁中訪問JavaBean,首先要通過<%@ page import %> 指令引入Java類。

2.聲明JavaBean對象

<jsp:useBean>標籤用來聲明JavaBean對象,例如:

<jsp:useBean id="myBean" class="com.xdl.bean.BeanDemo" scope="session" />

上述程式碼聲明了一個名字為"BeanDemo"的JavaBean對象,<jsp:useBean>標籤具有以下屬性:

id屬性:代表JavaBean對象的ID,實際上表示引用JavaBean對象的局部變數名,以及存放在特定範圍內的屬性名。JSP規範要求存放在所有範圍內的每個JavaBean對象都有唯一的ID,例如不允許在會話範圍記憶體在兩個ID為"BeanDemo"的JavaBean,也不允許在會話範圍和請求範圍內分別存在ID為"BeanDemo"的JavaBean。

class屬性:用來指定JavaBean的類名。

scope屬性:用來指定JavaBean對象的存放範圍,可選值包括page(頁面範圍)、request(請求範圍)、session(會話範圍)和application(Web應用範圍)。scope屬性的默認值為page,範例中的scope屬性取值為"session",表示會話範圍。

以上實例程式碼中的<jsp:useBean>標籤的處理流程如下:

(1)定義一個名為myBean的局部變數。

(2)嘗試從scope指定的會話範圍內讀取名為" myBean"的屬性,並且使得myBean局部變數引用具體的屬性值,即BeanDemo對象。

(3)如果在scope指定的會話範圍內,名為"myBean"的屬性不存在,那麼久通過BeanDemo類的默認構造方法創建一個BeanDemo對象,並把它存放在會話範圍內,令其屬性名為"myBean",此外,myBean局部變數也引用這個BeanDemo對象。

3.訪問JavaBean屬性

JSP提供了訪問JavaBean屬性的標籤,如果要將JavaBean的某個屬性輸出到網頁上,可以用<jsp:getProperty>標籤,例如:

<jsp:getProperty name="myBean" property="count" />

以上<jsp:getProperty>標籤根據name屬性的值"myBean"找到由<jsp:useBean>標籤聲明的ID為"myBean"的CounterBean對象,然後列印它的count屬性,它等價於以下Java表達式:

<%=myBean.getCount() %>

Servlet容器在運行<jsp:getProperty>標籤時,會根據property屬性指定的屬性名,自動調用JavaBean的相應的get方法。屬性名和get方法之間存在固定的對應關係。如果在JavaBean中不存在get方法時,那麼Servlet容器在運行<jsp:getProperty>標籤時就會拋出異常。由此尅安,只有開發人員創建的JavaBean類嚴格遵守JavaBean的規範,才能保證JSP中的訪問JavaBean的標籤能正常運行。

如果要給JavaBean的某個屬性賦值,可以使用<jsp:setProperty>標籤,例如:

<jsp:setProperty name="myBean" property="count" value="1" />

以上<jsp:setProperty>標籤根據name屬性的值"myBean",找到由<jsp:useBean>標籤聲明的ID為"myBean"的BeanDemo對象,然後給它的count屬性賦值。

值得注意的是,如果一個JSP文件通過<jsp:setProperty>或<jsp:getProperty>標籤訪問一個JavaBean的屬性,要求改JSP文件先通過<jsp:useBean>標籤聲明這個JavaBean,否則<jsp:setProperty>和<jsp:getProperty>標籤在運行時會拋出異常。