原網頁:http://www.douban.com/note/102320977/
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對象。
????例子的結果:
????????????????????count values is: 0
????????????????????scope = request
???此時 , 當客戶訪問當前Jsp頁面執行完畢并向客戶端發回響應時 ,JavaBean結束生命周期
3 JavaBean在session作用域中:
????JavaBean對象被創建后,一直存在于當前回話中,在同一會話中,共享同一JavaBean
????例子結果:
????????????????????count values is: 0
( 每刷新一次,增長1,當打開另一瀏覽器窗口重新發出請求時,就不在同一會話中了,將創建一個新的會話,從0開始重新增長。 )
????????????????????scope = session
4.JavaBean在application作用域中
?????JavaBean對象被創建后,一直存在于當前Web應用程序的生命周期中,在此應用程序中,共享同一JavaBean
例子結果:
????????????????????count values is: 0
( 每刷新一次,增長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
................
<jsp:useBean id="dbMsg" class="com.bean.SQLBean" scope="session"/>
dbMsg.doing();
................