熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL語言 >> 正文

淺析JSP開發中的對象和范圍屬性

2013-11-13 12:33:44  來源: SQL語言 
在JSP頁面中的對象包括用戶創建的對象(例如JavaBean對象)和JSP的隱含對象都有一個范圍屬性范圍定義了在什麼時間內在哪一個JSP頁面中可以訪問這些對象例如session對象在會話期間內可以在多個頁面中被訪問application對象在整個Web應用程序的生命周期中都可以被訪問在JSP中種范圍如下所示

  ·page范圍

  具有page范圍的對象被綁定到javaxServletjspPageContext對象中在這個范圍內的對象只能在創建對象的頁面中訪問可以調用pageContext這個隱含對象的getAttribute()方法來訪問具有這種范圍類型的對象(pageContext對象還提供了訪問其他范圍對象的getAttribute方法)pageContext對象本身也屬於page范圍當Servlet類的_jspService()方法執行完畢屬於page范圍的對象的引用將被丟棄page范圍內的對象在客戶端每次請求JSP頁面時創建在頁面向客戶端發送回響應或請求被轉發(forward)到其他的資源後被刪除

  ·request范圍

  具有request范圍的對象被綁定到javaxservletServletRequest對象中可以調用request這個隱含對象的getAttribute()方法來訪問具有這種范圍類型的對象在調用forward()方法轉向的頁面或者調用include()方法包含的頁面中都可以訪問這個范圍內的對象要注意的是因為請求對象對於每一個客戶請求都是不同的所以對於每一個新的請求都要重新創建和刪除這個范圍內的對象

  ·session范圍

  具有session范圍的對象被綁定到javaxservlethttpHttpSession對象中可以調用session這個隱含對象的getAttribute()方法來訪問具有這種范圍類型的對象JSP容器為每一次會話創建一個HttpSession對象在會話期間可以訪問session范圍內的對象

  ·application范圍

  具有application范圍的對象被綁定到javaxservletServletContext中可以調用application這個隱含對象的getAttribute()方法來訪問具有這種范圍類型的對象在Web應用程序運行期間所有的頁面都可以訪問在這個范圍內的對象

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

  .測試page范圍

  testjsp

<%
pageContextsetAttribute(namezhangsan);
outprintln(testjsp: );
outprintln(pageContextgetAttribute(name));
outprintln(<p>);
pageContextinclude(testjsp);
%>

  testjsp

<%
outprintln(testjsp: );
outprintln(pageContextgetAttribute(name));
%>
  訪問testjsp將看到如下的輸出

  testjsp: zhangsan

  testjsp: null

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

  .測試request范圍

  修改testjsp和testjsp如下所示

  testjsp

<%
requestsetAttribute(namezhangsan);
outprintln(testjsp: );
outprintln(requestgetAttribute(name));
outprintln(<p>);
pageContextinclude(testjsp);
%>
  testjsp

<%
outprintln(testjsp: );
outprintln(requestgetAttribute(name));
%>

  訪問testjsp將看到如下的輸出

  testjsp: zhangsan
 
  testjsp: zhangsan

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

pageContextinclude(testjsp);
  這一句注釋起來先訪問testjsp再訪問testjsp可以看到如下輸出

  testjsp: null

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

  .測試session范圍

  修改testjsp和testjsp如下所示

  testjsp

<%
sessionsetAttribute(namezhangsan);
%>
  testjsp

<%
outprintln(testjsp: );
outprintln(sessiongetAttribute(name));
%>
  先訪問testjsp然後在同一個浏覽器窗口中訪問testjsp可以看到如下輸出

  testjsp: zhangsan
 
  說明保存在session對象中的屬性具有session范圍在會話期間可以訪問這個范圍內的對象

  如果我們在訪問完testjsp後關閉浏覽器重新打開浏覽器窗口訪問testjsp將看到如下輸出

  testjsp: null

  這是因為客戶端與服務器開始了一次新的會話

  .測試application范圍

  修改testjsp和testjsp如下所示

  testjsp

<%
applicationsetAttribute(namezhangsan);
%>
  testjsp

<%
outprintln(testjsp: );
outprintln(applicationgetAttribute(name));
%>

  先訪問testjsp然後關閉浏覽器再打開浏覽器窗口訪問testjsp可以看到如下輸出

  testjsp: zhangsan

  說明保存在application對象中的屬性具有application范圍在Web應用程序運行期間都可以訪問這個范圍內的對象


From:http://tw.wingwit.com/Article/program/SQL/201311/16142.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.