JSP資料互動(二)----application
一 . application內建物件
答 : application物件類似於系統的"全域性變數" , 用於同一個應用內的所有使用者之間的資料共享 , application物件的生命週期是貫穿伺服器的執行週期 ;
二 . application的常用方法
答 : 1 . void setAttribute(String key , Object value) : 以key/value的形式將物件儲存到application中 , 此處如果儲存常用資料型別的話 , 需要儲存封裝型別的資料物件 , 用法如下 ;
示例 :
<%
Integer count = (Integer) application.getAttribute("count");
if(count!=null){
count+=1;
}else{
count=1;
}
application.setAttribute("count", count);
%>
2 . Object getAttribute(String key) : 通過key獲取application中儲存的物件 , 使用方法如下 ;
示例 :
<%
String username=(String)application. getAttribute (“username”);
out.println(username);
%>
3 . String getRealPath(String path) : 返回相對路徑的真實路徑 ;
4 . Enumeration getAttributeNames() : 該方法返回所有與當前application物件繫結在一起的引數或者java物件的名字 , 這個物件的返回值是一個列舉物件 , 使用方法如下 :
示例 :
<%
Enumeration enum1=application.getAttributeNames();
while(enum1.hasMoreElements()){
String attrName=(String)enum1.nextElement();
out.println(attrName+”<br>”);
}
%>
5 . getServerInfo() : 該方法可以獲得當前伺服器的詳細資訊,不同的伺服器返回的資訊格式不一樣 ;
6 . removeAttribute(String name) : 此方法可以刪除已經儲存的key/value鍵值對 , 刪除之後則不能再用getAttribute()方法來獲取值 , 否則返回null值 ;
7 . log(String msg) : 該方法用於往伺服器的log檔案中寫入資訊,利用這個方法,我們可以在log檔案中記錄訪問者的資訊,這對於統計訪問流量來源方面十分有用,同時也便於管理員監控網站的執行情況。其實,還有一個同名但使用不同引數的log()方法,利用後者,我們可以將JSP程式執行過程中所發生的錯誤事件都記入log檔案中 ;
三 . application的用法以及注意事項
答 : 1 . 登入控制頁面中增加如下程式碼 :
<%
Integer count = (Integer) application.getAttribute("count");
if(count!=null){
count+=1;
}else{
count=1;
}
application.setAttribute("count", count);
%>
2 . 在顯示統計資料中增加如下程式碼 :
<body>
<%
Integer i = (Integer) application.getAttribute("count");
%>
訪問量統計 : 目前共有<%=i %>個人訪問過本網站
<a href="invalidateSession.jsp">登出登陸</a>
</body>
3 . invalidateSession.jsp是會話失效頁面 , 在此頁面中該會話失效並返回登入頁面 :
<body>
<%
session.invalidate();
response.sendRedirect("login.jsp");
%>
</body>
注意事項 :
伺服器啟動後產生了這個application物件,當客戶在訪問的網站的各個頁面之間瀏覽時,這個物件都是同一個,直到伺服器關閉 , 如果是上面的例子 , tomcat伺服器停止後 , 計數將會清零 ;
四 . 獲得application物件的方式
答 : 1 . 在JSP程式中直接使用application代表application物件 , 比如我們上面的例子中的用法 ;
2 . 使用ServletConfig介面
⑴ . 使用ServletConfig介面可以間接獲取application物件,但是這個application物件的名字不能同樣為 application,因為application是JSP引擎建立的預設的application物件的副本,不能夠被覆蓋 ;
⑵ . 使用ServletConfig介面其實就是使用config物件,config物件是實現ServletConfig介面的類的例項 物件,它可以通過呼叫getServletContext()方法返回一個ServletContext介面的物件,也就是application 物件的一個副本
示例:
<%
ServletContext app = config.getServletContext();
out.println(app.getServerInfo());
%>
3 . pageContext物件的getServletContext()方法同樣可以返回一個application物件的副本 ;
示例 :
<%
ServletContext app= pageContext. getServletContext();
out.println(app.getServerInfo());
%>
五 . JSP常用內建物件的總結
答 : 1 . out : 用與向客戶端輸出訊息 ;
2 . request : 主要用於處理客戶端請求的資料資訊 ;
3 . response : 用於響應客戶端請求並向客戶端輸出資訊 ;
4 . session : 用於記錄會話狀態的相關資訊 ;
5 . application : 類似於系統的全域性變數 , 用於實現web應用中的資源共享 ;
6 . pageContext : 提供了JSP在執行時訪問和其相關的環境資訊的能力 , 通過該物件可以訪問和當前JSP頁面相關聯的所有作用域 , 以及一些頁面屬性 , 常用方法如下 :
⑴ . ServletRequest getRequest() : 獲得reuqest物件 ;
⑵ . ServletContext getServletContext() : 獲得application物件的一個副本 ;
⑶ . ServletResponse getResponse() : 獲得response物件 ;
⑷ . HttpSession getSession() : 獲得session物件 ;
⑸ . JspWriter getOut() : 獲得out物件 ;
⑹ . void setAttribute() : 儲存屬性 ;
⑺ . Object getAttribute() : 獲得屬性 ;
⑻ . void include() : 請求指定的資源 , 並將目標資源的響應結果包含在呼叫頁面的相應中 ;
page : 表示當前頁面 , 類似於java中的this , 在JSP頁面中 , 很少使用page物件 ;
config : 用於存放JSP編譯後的初始資料 , 與page物件一樣 , 在JSP頁面中很少使用 ;
exception : 表示JSP頁面執行時產生的異常和錯誤資訊 , 該物件只有在錯誤頁面(page指令中設定isErrorPage為true的頁面)中才能夠使用 ;