JSP 對 JavaBean 的支持使您能通過 Web 站點重復使用組件。JavaBean 可以是類文件或串行化 Bean,也可由 Servlet 動態生成。請使用 <BEAN> 標記來創建一個 Bean 實例,以使從 JSP 文件的任何地方都可對該實例進行訪問。標記 <BEAN> 的語法為:
<bean name="Bean_name" varname="local_Bean_name"
type ="class_or_interface_name" introspect="yes|no"
beanName="ser_filename" create="yes|no"
scope="request|session|userprofile" >
<param property_name="value">
</bean>
其中的屬性及其含義如下:
(1) name:用于在相應的范圍(由 scope 屬性指定)內查找 Bean 的名稱。例如,這可能是用于存儲 Bean 的會話(session)關鍵值。該值是分大小寫的。
(2) varname:用于在 JSP 文件中的任何地方引用 Bean 的名稱。該屬性是可選的。缺省值為 name 屬性值。該值是分大小寫的。
(3) type:Bean 的類文件名。該名稱用于以代碼說明 Bean 實例。缺省值為 Object 類型。該值是分大小寫的。
(4) Introspect:當該值為真時,JSP 處理器檢查將所有的請求屬性,并調用與請求屬性匹配的 set 屬性方法集(該屬性是在 BeanInfo 中傳遞的)。該屬性的缺省值為是。
(5) BeanName:Bean 的 .class 文件名、Bean 軟件包名或包含 Bean 的串行化文件(.ser 文件)的文件名。(該名稱是給 Bean 實例程序的)。僅當 Bean 不在指定的范圍中,且創建屬性被設置成是時,才使用該屬性。該值是分大小寫的。文件路徑必須在應用服務器的Java 類路徑中指定,除非文件在 applicationserver_root/servlets 目錄下。
(6) Create:當該值為真時,如果處理器在指定的范圍內沒有找到 Bean,則 JSP 將創建一個 Bean 實例。缺省值為真。
(7)Scope:Bean 的生命期。該屬性是可選的,其缺省值為 request 。有效值為:
request - 由 Servlet 將 Bean 設置成請求的上下文,該 Servlet 使用 JSP API 中描述的 API 調
用 JSP 文件。如果 Bean 不是請求上下文的一部分,則將創建該 Bean,并將其存儲在請求上下文中,除非創建屬性已設置為否。
session - 如果當前對話中存在 Bean,則 Bean 已被重用。如果不存在 Bean,且創建屬性設置
為是,則它已被創建并作為會話的一部分存儲起來。
userprofile - 由 Servlet 請求對象檢索、造型成指定的類型,并進行內省的用戶簡要表文件。(在
IBM WebShere應用服務器中,缺省類型為 com.ibm.servlet.personalization.userprofile.UserProfile)。
(8) param:屬性和值配對的列表。屬性是在 Bean 中用內省自動設置的。只在實例化 Bean 時,才對屬性進行設置。
除了使用 <param> 屬性來設置 Bean 屬性外,還可以使用其它三種方法:第一,在請求包含 Bean 的 Web 頁面(JSP 文件)的 URL 時,指定查詢參數。必須將內省屬性設置成“是”。其示例如下:http://www.myserver.com/signon.jsp?name=jones&password=d13x,其中 Bean 屬性名將設置為 jones。
第二種方法,將屬性指定成由 HTML <FROM> 標記提交的參數。必須將 mothod 屬性設置成 post。將 action 屬性設置成調用 Bean 的 JSP 文件的 URL。必須將 introspect 屬性設置成“是”。其示例如下:
<form action="http://www.myserver.com/SearchSite" method="post">
<input type="text" name="Search for: ">
<input type="submit">
</form>
第三種方法是使用 JSP 語法設置 Bean 屬性。
在指定了 <BEAN> 標記后,就可以從 JSP 文件中的任何地方訪問 Bean。這里有三種訪問 Bean 屬性的方法:使用 JSP scriptlet、使用 JSP 表達式、使用 <INSERT> 標記(如同 變量數據的 HTML 模板語法中所說明的)。請參閱JSP示例(DisplayData.jsp 文件)以獲取三個訪問 Bean 方法的每個方法示例。
4.直接插入的 Java 代碼(scriptlet)
可以在 JSP 文件的 <% 和 %> 標記間直接嵌入任何有效的 Java 語言代碼。這樣嵌入的代碼稱為 scriptlet。如果沒有指定 method 指令,則生成的代碼將成為 service 方法的主體。用于 Servlet 的 scriptlet 可以使用一個預定義的變量集,該變量集符合基本的 Servlet、輸出和輸入類:
(1) request:由 javax.servlet.http.HttpServletRequest 定義的 Servlet 請求類
(2) responses:由 javax.servlet.http.HttpServletRequest 定義的 Servlet 響應類
(3) out:由 java.io.PrintWriter 定義的輸出轉錄程序類
(4) in:由 java.io.BufferedReader 定義的輸入閱讀程序類
其示例如下:
<%
foo = request.getParameter("Name");
out.println(foo);
%>
新聞熱點
疑難解答