日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

j2ee四大作用域pagecontext,request,session,ServletContext

 Levy_X 2017-09-09

  在JSP頁面中的對象,包括用戶創(chuàng)建的對象(例如,JavaBean對象)和JSP的隱含對象,都有一個范圍屬性。范圍定義了在什么時間內(nèi),在哪一個JSP頁面中可以訪問這些對象。例如session對象在會話期間內(nèi),可以在多個頁面中被訪問。application對象在整個Web應(yīng)用程序的生命周期中都可以被訪問。在JSP中,有4種范圍,如下所示。


一,page范圍–PageContext域

  具有page范圍的對象被綁定到j(luò)avax.servlet.jsp.PageContext對象中。在這個范圍內(nèi)的對象,只能在創(chuàng)建對象的頁面中訪問??梢哉{(diào)用pageContext這個隱含對象的getAttribute()方法來訪問具有這種范圍類型的對象(pageContext對象還提供了訪問其他范圍對象的getAttribute方法),pageContext對象本身也屬于page范圍。當(dāng)Servlet類的_jspService()方法執(zhí)行完畢,屬于page范圍的對象的引用將被丟棄。page范圍內(nèi)的對象,在客戶端每次請求JSP頁面時創(chuàng)建,在頁面向客戶端發(fā)送回響應(yīng)或請求被轉(zhuǎn)發(fā)(forward)到其他的資源后被刪除。


二,request范圍–Request域

  具有request范圍的對象被綁定到j(luò)avax.servlet.ServletRequest對象中,可以調(diào)用request這個隱含對象的getAttribute()方法來訪問具有這種范圍類型的對象。在調(diào)用forward()方法轉(zhuǎn)向的頁面或者調(diào)用include()方法包含的頁面中,都可以訪問這個范圍內(nèi)的對象。要注意的是,因為請求對象對于每一個客戶請求都是不同的,所以對于每一個新的請求,都要重新創(chuàng)建和刪除這個范圍內(nèi)的對象。

  request對象的主要方法:

1
2
3
1、 getParameter(String name) return String  //獲取頁面form表單中name屬性為"name"的value值
2、 getParameterNames() return Enumeration   //獲取頁面提交的所有的具有name屬性的表單(包含button)
3、 getParameterValues(String name) return String[]  //方法將獲取所有form表單中name屬性為"name"的值.該方法返回一個數(shù)組.


三,session范圍–Session域

   具有session范圍的對象被綁定到j(luò)avax.servlet.http.HttpSession對象中,可以調(diào)用session這個隱含對象的getAttribute()方法來訪問具有這種范圍類型的對象。JSP容器為每一次會話,創(chuàng)建一個HttpSession對象,在會話期間,可以訪問session范圍內(nèi)的對象。

Session對象的主要方法:

1
2
3
4
5
6
7
8
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


四,application范圍–ServletContext域

具有application范圍的對象被綁定到j(luò)avax.servlet.ServletContext中,可以調(diào)用application這個隱含對象的getAttribute()方法來訪問具有這種范圍類型的對象。在Web應(yīng)用程序運行期間,所有的頁面都可以訪問在這個范圍內(nèi)的對象。

application對象的主要方法:

1
2
3
4
5
1、 getAttribute(String name) return Object
2、 getAttributeNames() return Enumeration
3、 getInitParameter(String name)
4、 getServletInfo()
5、 setAttribute(String name , Object object)

在web.xml中配置初始化參數(shù)

 在<web-app>下配置

1
2
3
4
<context-param>
   <param-name>yxkong</param-name>
   <param-value>魚翔空</param-value>
</context-param>

 讀取web.xml中的參數(shù)

   

1
2
3
ServletContext sc=this.getServletContext();
sc.getInitParameter("yxkong");
sc.getInitParameterNames();


下面我們通過幾個簡單的例子,來看一下這4種范圍對象的應(yīng)用。

1.測試page范圍

test1.jsp

1
2
3
4
5
6
7
<%
   pageContext.setAttribute("name","yxkong");
   out.println("test1.jsp: ");
   out.println(pageContext.getAttribute("name"));
   out.println("<p>");
   pageContext.include("test2.jsp");
%>

test2.jsp

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

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

 test1.jsp: yxkong

 test2.jsp: null

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

2.測試request范圍

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

test1.jsp

1
2
3
4
5
6
7
<%
  request.setAttribute("name","yxkong");
  out.println("test1.jsp: ");
  out.println(request.getAttribute("name"));
  out.println("<p>");
  pageContext.include("test2.jsp");
%>

test2.jsp

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

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

 test1.jsp: yxkong

 test2.jsp: yxkong

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

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

test2.jsp: null

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

3.測試session范圍

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

test1.jsp

1
2
3
<%
  session.setAttribute("name","yxkong");
%>

test2.jsp

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

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

test2.jsp: yxkong

說明保存在session對象中的屬性具有session范圍,在會話期間,可以訪問這個范圍內(nèi)的對象。

如果我們在訪問完test1.jsp后,關(guān)閉瀏覽器,重新打開瀏覽器窗口,訪問test2.jsp,將看到如下輸出:

test2.jsp: null

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

4.測試application范圍

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

test1.jsp

1
2
3
<%
  application.setAttribute("name","yxkong");
%>

test2.jsp

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


先訪問test1.jsp,然后關(guān)閉瀏覽器,再打開瀏覽器窗口,訪問test2.jsp,可以看到如下輸出:

test2.jsp: yxkong

說明保存在application對象中的屬性具有application范圍,在Web應(yīng)用程序運行期間,都可以訪問這個范圍內(nèi)的對象。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多