浪潮優派培訓筆記:JSP的9大內置對象之(三).與數據通信相關的4個內置對象:pageContext、request、session、application

(三).與數據通信相關的4個內置對象:pageContext、request、session、application

在對象中根據其是否能共享數據可以將request、session、application和pageContext歸爲一類。它們都可以用來共享數據,可以藉助這些對象在JSP之間或與Servlet之間傳遞數據。

共同點:

都能通過setAttribute("name","value")方法封裝值,getAttribute("")取值,removeAttribute("")刪除值。

它們之間最大的區別在於範圍(Scope)不一樣,類似於全局變量和局部變量。

數據通信範圍(對象生命週期)從小到大依次爲:pageContext -> request -> session -> application

JSP有四種範圍,分別爲:頁面pageContext、請求request、會話session、應用application。

頁面:當前JSP 頁面的範圍。

請求:在一個JSP網頁發出請求到另一個JSP網頁響應之後,其中的數據就被釋放。

會話:一段用戶持續和服務器所連接的時間,但與服務器斷開後(如關閉瀏覽器),其中的數據就被釋放。

應用:在服務器開始執行服務,到服務器關閉爲止。

(1). pageContext: 生命週期:當前頁面

    根據業務需要,程序員可以通過setAttribute("name","value")方法將值封裝到此pageContext中,則在此pageContext生命週期範圍內,可以通過getAttribute("name")取值

    pageContext提供一系列getXxx()方法,可以獲取其他八大內置對象

範例:下面的代碼會在瀏覽器上打印出:ynz

<%@ page contentType="text/html;charset=utf-8"%>

<html>

    <body>

       <%--設置page屬性和屬性值--%>

       <%pageContext.setAttribute("user", "ynz");%>

       <%--在頁面上顯示屬性的值--%>

       <%=pageContext.getAttribute("user")%>

    </body>

</html>

(2). request:生命週期(兩個頁面間):從一個請求開始,到此請求得到響應。

傳值方式:

(1)服務器自動封裝值(如表單提交,URL重寫)到request,request.getParameter()方法取值

(2)程序員通過request.setAttribute封裝,request.getAttribute取值,

如請求轉發,request.getRequestDispatcher(url).forward(request,response);

(3).session(會話):生命週期:從瀏覽器打開,到瀏覽器關閉。可用於保存用戶信息。

【1】根據業務需要,程序員可以通過setAttribute("name","value")方法將值封裝到此session中,則在此session生命週期範圍內,可以通過getAttribute("name")取值

【2】在項目的web.xml中設置session的失效時間(時間單位是分鐘)

    <session-config>

       <session-timeout>10</session-timeout>

    </session-config>

 [補充]:通過request可以獲取session:  HttpSessionsess=request.getSession();

(4).application: 生命週期:整個服務器運行期間。從服務器開啓,到服務器關閉

   根據業務需要,程序員可以通過setAttribute("name","value")方法將值封裝到此application中,則在此application生命週期範圍內,可以通過getAttribute("name")取值。

    典型應用:網站訪問計數 。

application的生命週期範圍最大、停留的時間也最久,所以使用時要特別注意,不然可能會造成服務器負載越來越重的情況。

發佈了40 篇原創文章 · 獲贊 39 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章