標籤: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的使用範圍(轉自用)