page request session application 範圍

來源:互聯網
上載者:User

標籤:http   io   ar   sp   java   for   strong   on   cti   

在JSP頁面中的對象,包括使用者建立的對象(例如,JavaBean對象)和JSP的隱含對象,都有一個範圍屬性。範圍定義了在什麼時間內,

在哪一個JSP頁面中可以訪問這些對象。例如,session對象在會話期間內,可以在多個頁面中被訪問。application對象在整個Web應

用程式的生命週期中都可以被訪問。在JSP中,有4種範圍,如下所示。

1. page範圍

具有page範圍的對象被綁定到javax.servlet.jsp.PageContext對象中。在這個範圍內的對象,只能在建立對象的頁面中訪問。可以調

用pageContext這個隱含對象的getAttribute()方法來訪問具有這種範圍類型的對象(pageContext對象還提供了訪問其他範圍對象的

getAttribute方法),pageContext對象本身也屬於page範圍。當Servlet類的_jspService()方法執行完畢,屬於page範圍的對象的

引用將被丟棄。page範圍內的對象,在用戶端每次請求JSP頁面時建立,在頁面向用戶端發送迴響應或請求被轉寄(forward)到其

他的資源後被刪除。

2. request範圍

具有request範圍的對象被綁定到javax.servlet.ServletRequest對象中,可以調用request這個隱含對象的getAttribute()方法來訪問

具有這種範圍類型的對象。在調用forward()方法轉向的頁面或者調用include()方法包含的頁面中,都可以訪問這個範圍內的對象。

要注意的是,因為請求對象對於每一個客戶請求都是不同的,所以對於每一個新的請求,都要重新建立和刪除這個範圍內的對象。

request對象的主要方法:

1、 getParameter(String name) return String

2、 getParameterNames() return Enumeration

3、 getParameterValues(String name) return String[]

3.session範圍

具有session範圍的對象被綁定到javax.servlet.http.HttpSession對象中,可以調用session這個隱含對象的getAttribute()方法來訪問

具有這種範圍類型的對象。JSP容器為每一次會話,建立一個HttpSession對象,在會話期間,可以訪問session範圍內的對象。

Session對象的主要方法:

1、 getAttribute(String name) return Object

2、 getAttributeNames() return Enumeration

3、 getCreationTime() return long

4、 getId() return String

5、 GetLastAccessedTime() return long

6、 GetMaxInactiveInterval() return int

7、 RemoveAttribute(String name) void

8、 SetAttribute(String name , java.lang.Object value) void

4.application範圍

具有application範圍的對象被綁定到javax.servlet.ServletContext中,可以調用application這個隱含對象的getAttribute()方法來訪問

具有這種範圍類型的對象。在Web應用程式運行期間,所有的頁面都可以訪問在這個範圍內的對象。

application對象的主要方法:

1、 getAttribute(String name) return Object

2、 getAttributeNames() return Enumeration

3、 getInitParameter(String name)

4、 getServletInfo()

5、 setAttribute(String name , Object object)

下面我們通過幾個簡單的例子,來看一下這4種範圍對象的應用。

1.測試page範圍

test1.jsp

<%pageContext.setAttribute("name","zhangsan");out.println("test1.jsp: ");out.println(pageContext.getAttribute("name"));out.println("<p>");pageContext.include("test2.jsp");%>

test2.jsp

<%out.println("test2.jsp: ");out.println(pageContext.getAttribute("name"));%>

訪問test1.jsp,將看到如下的輸出:

test1.jsp: zhangsan

test2.jsp: null

說明儲存在pageContext對象中的屬性具有page範圍,只能在同一個頁面中被訪問。

2.測試request範圍

修改test1.jsp和test2.jsp,如下所示。

test1.jsp

<%request.setAttribute("name","zhangsan");out.println("test1.jsp: ");out.println(request.getAttribute("name"));out.println("<p>");pageContext.include("test2.jsp");%>

test2.jsp

<%out.println("test2.jsp: ");out.println(request.getAttribute("name"));%>

訪問test1.jsp,將看到如下的輸出:

test1.jsp: zhangsantest2.jsp: zhangsan

說明儲存在request對象中的屬性具有request範圍,在請求對象存活期間,可以訪問這個範圍內的對象。

將pageContext.include("test2.jsp"); 這一句注釋起來,先訪問test1.jsp,再訪test2.jsp,可以看到如下輸出:

test2.jsp: null

這是因為用戶端開始了一個新的請求。

3.測試session範圍

修改test1.jsp和test2.jsp,如下所示。

test1.jsp

<%session.setAttribute("name","zhangsan");%>

test2.jsp

<%out.println("test2.jsp: ");out.println(session.getAttribute("name"));%>

先訪問test1.jsp,然後在同一個瀏覽器視窗中訪問test2.jsp,可以看到如下輸出:

test2.jsp: zhangsan

說明儲存在session對象中的屬性具有session範圍,在會話期間,可以訪問這個範圍內的對象。

如果我們在訪問完test1.jsp後,關閉瀏覽器,重新開啟瀏覽器視窗,訪問test2.jsp,將看到如下輸出:

test2.jsp: null

這是因為用戶端與伺服器開始了一次新的會話。

4.測試application範圍

修改test1.jsp和test2.jsp,如下所示。

test1.jsp

<%application.setAttribute("name","zhangsan");%>

test2.jsp

<%out.println("test2.jsp: ");out.println(application.getAttribute("name"));%>

先訪問test1.jsp,然後關閉瀏覽器,再開啟瀏覽器視窗,訪問test2.jsp,可以看到如下輸出:

test2.jsp: zhangsan

說明儲存在application對象中的屬性具有application範圍,在Web應用程式運行期間,都可以訪問這個範圍內的對象。


page request session application 範圍

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.