比較page、request、session、application的使用範圍(轉自用)

來源:互聯網
上載者:User

標籤:pat   機制   ext   web.xml   mapping   config   預設   pass   tar   

(1)直接在web contain中進行對象的執行個體化。

內建對象

類型

範圍

pageContext

javax.servlet.jsp.pageContext

page

request

javax.servlet.http.HttpServletRequest

request

response

javax.servlet.http.HttpServletResponse

page

session

javax.servlet.http.HttpSession

session

application

javax.servlet.ServletContext

application

config

javax.servlet.ServletConfig

page

out

java.servlet.jsp.JspWriter

page

page

java.lang.Object

page

exception

java.lang.Throwable

page

(2)jsp內建對象分類

與servlet有關的隱含對象:page,config

與input/output有關的隱含對象:out,request,response

與jsp執行時有關的context的隱含對象:session,application,pageContext

與error有關的隱含對象:exception

(3)屬性的設定和取得

設定屬性:public  void  setAttribute(String  name,Object.value)

取得屬性:public  void  getAttribute(String  name)

(4)四種屬性儲存範圍

在一個頁面範圍內:page

在一次伺服器請求範圍內:request

在一次會話範圍內:session

在一個應用伺服器範圍內:application

(5)page範圍

Page範圍通過PageContext對象來設定,將屬性儲存在一次請求範圍之內,必須使用伺服器端跳轉<jsp:forward/>

(6)session範圍

只保留一個使用者的資訊

(7)application範圍

所有的使用者都可以取得此資訊,此資訊在整個伺服器上被保留。Application屬性範圍值,只要設定一次,則所有的網頁視窗都可以取得資料。

Application,session,request都需要跨多個頁,屬性儲存時記憶體開銷大。如果能使用request就不適用session,能使用session的就不要使用application。

(8)pageContext預設情況下表示一個頁面的儲存範圍

public  void  setAttribute(String  name,Object  value,int  scope)

public static final int APPLICATION_SCOPE:application範圍

public static final int SESSION_SCOPE:session範圍

public static final int REQUEST_SCOPE:request範圍

public static final int PAGE_SCOPE:page範圍

四種屬性範圍都是依靠pageContext展開的,但是在開發中,往往使用session,request範圍

 

 session對象

(1)session功能

    Session對象主要用於儲存使用者的各種資訊,直到它的生命週期超過或被人為釋放掉為止,可以通過session對象來判斷此使用者是否是合法使用者。

    Session對象是javax.Servlet.http.HttpSession介面的執行個體化對象,session屬於http協議範疇之內的對象,所以只有唯一http包下有此介面,沒有任何繼承關係,使用者只要一串連到伺服器,則立刻分配一個session給使用者。

(2)主要方法

session.getID():伺服器上通過session來分別不同的使用者,sessionID:任何連結到伺服器上的使用者,伺服器都會為之分配唯一的一個不會重複的sessionID。由伺服器統一管理,人為不能控制。

session.getId().length():id的長度為32位

session.isNew():判斷是否是新的使用者

session.invalidate():使session失效

session.getCreationTime():得到session的建立時間,返回long類型,通過Date得到時間

session.getLastAccessedTime():得到最後一次操作時間,返回long類型

執行個體:

<%@page contentType="text/html;charset=gb2312"%>

<%@page import="java.util.*"%>

<%

       long l = session.getCreationTime() ;

       long l2 = session.getLastAccessedTime() ;

%>

<h1>session CREATE : <%=new Date(l)%></h1>

<h1>session last access: <%=new Date(l2)%></h1>

<h1><%=(l2-l)/1000%></h1>

假如需要求出使用者線上時間,使用以下公式:最後操作時間—建立的時間

(3)session屬性的設定

session.setAttribute(String  name,Object  value)

session.getAttribute(String  name)

session.removeAttribute(String  name)

(4)兩種寫法的區別

    if(name.equals("mldn")&&pass.equals("password")):假如其中的name和pass沒有被初始化,那麼在執行此句子的時候會出現nullpointexception。

    if("mldn".equals(name)&&"password".equals(pass)):如果使用該寫法則不會出現錯誤。

(5)session用法:驗證使用者是否登陸。

(6)session與cookie

    Session和cookie用於跨網頁共用資料。Session記錄專屬的個人資訊,在不同頁面中傳遞,使用setAttribute,getAttribute方法;Cookie儲存於用戶端,供瀏覽器與web伺服器互連資料用的純文字檔案,當ie執行的時候會在電腦中產生一個cookie。Session比cookie更安全,session比cookie更佔用資源,session使用了cookie的機制,如果cookie被禁用,則session也無法使用。

application與config對象

(1)application簡介

    Application對象主要的作用就是儲存公用資訊,屬於javax。Servlet。ServletContext,此工作目錄的路徑不是固定的,有可能此工作目錄在c盤上或是在d盤得到的工作目錄的真實路徑。Application是在整個伺服器中保持的只有一個執行個體的對象。

(2)屬性操作: setAttribute(),getAttribute(),removeAttribute()

(3)真實路徑: application.getRealPath(String path),其中String path是"/"。在實際使用中用getServletContext()方法代替application。格式如下:

    getServletContext().getRealPath("/")

    this.getServletContext.getRealPath("/")

(4)Jsp安全性Config對象

(a) 在j2ee中安全性體現在工作目錄的WEB-INF檔案夾,頁面儲存在此檔案夾下,外面無法發現此檔案夾內的檔案,如果要使此檔案夾內的檔案能被使用者訪問,則修改WEB-INF檔案夾下存在的web.xml檔案,web.xml檔案屬於整個web網站的設定檔。

<……mapping  start>

<servlet>

   <servlet-name></servlet-name>

   <jsp-file></jsp-file>

   <init-param>

         <param-name></param-name>

         <param-value></param-value>

   </init-param>

</servlet>

<servlet-mapping>

         <servlet-name></servlet-name>

         <url-pattern>/瀏覽器中輸入的地址</url-pattern>

</servlet-mapping>

<……mapping  end>

修改web.xml之後重啟伺服器。

(b)config對象

    Config對象一般用來取得伺服器的初始化配置參數,若要使用此對象應在WEB-INF/web.xml之中配置。Config對象在javax.Servlet.servletConfig中取得初始化參數的方法:

       public string getInitParameter(String name)

通過此種功能,可以將資料庫連結的一些資訊寫在設定檔之中,下面兩種方法類似,是取得全部配置參數的:

   public Enumeration getInitParameterNames()

       request.getParameterNames()

比較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.