JavaBean是一種可複用,跨平台的元件。共有兩種JavaBean:一種無使用者界面,這種一般用于處理資料運算,操作資料庫等。另一種是有使用者界面(User Interface)的JavaBean. 在Jsp中一般通路無使用者界面的JavaBean。
Jsp中通路JavaBean文法:
1. 使用page指令導入 JavaBean 類:
<%@page import="包名 . 類名" %>
2. 使用<jsp:useBean>标簽聲明JavaBean對象:
<jsp:useBean id="執行個體名" class="包名 . 類名" scope="作用範圍"/>
注意:要給出完整的(包名 . 類名),否則報ClassNotFoundException
例:<jsp:useBean id="bean" class="com.CountBean" scope="session"/>
上面的代碼相當于:
CountBean bean = new CountBean();
session.setAttribute( "bean" , bean );
注意:如果在scope指定範圍内,該JavaBean已存在,則<jsp:useBean>不會生成新的JavaBean對象,而是直接獲得已經存在的 JavaBean 對象的引用.
3.使用<jsp:getProperty>和<jsp:setProerty>标簽通路JavaBean屬性:
<jsp:getProperty name="執行個體名" property="Bean中的屬性名">
調用Bean中的get方法得到某屬性的值
<jsp:setProperty name="執行個體名" property="Bean中的屬性名">
調用Bean中的set方法給某屬性指派
1.JavaBean在page作用域中:
在這種情況下,客戶每次通路Jsp頁面時,都會建立一個JavaBean對象,僅在目前Jsp頁面中有效。
例子的結果:
count values is: 0
scope = page
此時JavaBean在将以下兩種情況下結束生命周期
(1)當客戶通路目前Jsp頁面通過forword轉發請求到另一檔案時
(2) 當客戶通路目前Jsp頁面執行完畢并向用戶端發回響應時
2.JavaBean在request作用域中:
與page一樣,客戶每次通路Jsp頁面時,都會建立一個JavaBean對象。
scope = request
此時 , 當客戶通路目前Jsp頁面執行完畢并向用戶端發回響應時 ,JavaBean結束生命周期
3 JavaBean在session作用域中:
JavaBean對象被建立後,一直存在于目前回話中,在同一會話中,共享同一JavaBean
例子結果:
( 每重新整理一次,增長1,當打開另一浏覽器視窗重新送出請求時,就不在同一會話中了,将建立一個新的會話,從0開始重新增長。 )
scope = session
4.JavaBean在application作用域中
JavaBean對象被建立後,一直存在于目前Web應用程式的生命周期中,在此應用程式中,共享同一JavaBean
例子結果:
( 每重新整理一次,增長1,當打開另一浏覽器視窗重新送出請求時,此時還在同一Web應用程式中了,從原有基礎上)
注意:預設的情況下,jsp中session的屬性是true
例如:javaBean作用範圍是session的情況!
a.jsp
.................
<jsp:useBean id="dbMsg" class="com.bean.SQLBean" scope="session"/>
<%
//初始化
dbMsg.getConncetion("org.gjt.mm.mysql.Driver","jdbc:mysql://localhost/ss", "lala", "haha");
dbMsg.getStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
%>
<jsp:include page="b.jsp"/>
.............
b.jsp
................
dbMsg.doing();