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


(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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM