自己做實驗討論一下javabean中scope的不同取值的區別和其默認值問題。
1,先討論request,session與application的區別,倆文件如下:
Trick.java
package trick;
import java.io.*;
public class Trick
{ int i=1;
public int getI()
{ i++;
return i;
}
}
trick.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="trick.Trick"%>
<HTML><BODY>
<jsp:useBean id="trick" class="trick.Trick" scope="request/session/application" />
<jsp:getProperty name="trick" property="i" />
</BODY><HTML>
運行trick.jsp
Request: 刷新頁面3次屏幕顯示2,重啓瀏覽器屏幕顯示2;
Session: 刷新頁面3次數字從2開始遞增至4,重啓瀏覽器屏幕重新從2開始遞增;
Application: 刷新頁面3次數字從2開始遞增4,重啓瀏覽器從4開始遞增。
結論:
應用範圍大小比較:request<session<application
Request: 請求期間有效
Session: 會話期間有效
Application: 服務器運行期間有效
2,因爲page純JSP自己弄出來的一範圍,所以單獨討論。
新增一個頁面:
trick1.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="trick.Trick"%>
<HTML><BODY>
<jsp:useBean id="trick" class="trick.Trick" scope="request" />
<jsp:getProperty name="trick" property="i" />
<jsp:forward page="trick.jsp" />
</BODY><HTML>
運行trick1.jsp
Trick1.jsp,trick.jsp中同取scope=”request”: 屏幕顯示3;
Trick1.jsp,trick.jsp中同取scope=”page”:屏幕顯示2;
結論:
應用範圍大小:page<request
Page:當前頁面有效
3,scope不賦值的情況下的默認值。
trick1.jsp中scope=”request” ;
trick.jsp中去掉scope;
運行trick1.jsp,屏幕顯示2,與scope=”page”時結果相同,故理論上默認值應爲page。
看過一些文獻裏說默認值爲request,可能是版本問題,有待考證。