JSP application 對(duì)象用于保存應(yīng)用程序的公用數(shù)據(jù),服務(wù)器啟動(dòng)并自動(dòng)創(chuàng)建 application 對(duì)象后,只要沒有關(guān)閉服務(wù)器,application 對(duì)象就一直存在,所有用戶共享 application 對(duì)象。
JSP application 對(duì)象是 javax.servlet.ServletContext 類的實(shí)例,這有助于查找有關(guān) Servlet 引擎和 Servlet 環(huán)境的信息。它的生命周期從服務(wù)器啟動(dòng)到關(guān)閉。在此期間,對(duì)象將一直存在。這樣,在用戶的前后連接或不同用戶之間的連接中,可以對(duì)此對(duì)象的同一屬性進(jìn)行操作。在任何地方 對(duì)此對(duì)象屬性的操作,都會(huì)影響到其他用戶的訪問。
表 1 列出了 application 對(duì)象的常用方法。
方法 |
說明 |
---|---|
getAttribute( String arg) |
獲取 application 對(duì)象中含有關(guān)鍵字的對(duì)象 |
getAttributeNames() |
獲取 application 對(duì)象的所有參數(shù)名字 |
getMajorVersion() |
獲取服務(wù)器支持 Servlet 的主版本號(hào) |
getMinorVersion() |
獲取服務(wù)器支持 Servlet 的從版本號(hào) |
removeAttribute(java.lang.String name) |
根據(jù)名字刪除 application 對(duì)象的參數(shù) |
setAttribute(String key,Object obj) |
將參數(shù) Object 指定的對(duì)象 obj 添加到 application 對(duì)象中,并 為添加的對(duì)象指定一個(gè)索引關(guān)鍵字 |
例1:利用 application 對(duì)象查找 Servlet 有關(guān)的屬性信息,包括 Servlet 的引擎名、版本號(hào)、服務(wù)器支持的 Servlet API 的最大和最小版本號(hào)、指定資源的路徑等。文件名為 Test.jsp,代碼如下:
<%@ page contentType="text/html;charset=utf-8"%>
<html>
<head>
<title>application對(duì)象查找servlet有關(guān)的屬性信息</title>
<head>
<body>
JSP(SERVLET)引擎名及版本號(hào):
<%=application.getServerInfo()%><br>
服務(wù)器支持的 Server API 的最大版本號(hào):
<%=application.getMajorVersion ()%><br>
服務(wù)器支持的 Server API 的最小版本號(hào):
<%=application.getMinorVersion ()%><br>
指定資源(文件及目錄)的 URL 路徑:
<%=application.getResource("Test.jsp")%><br>
返回 Test.jsp 虛擬路徑的真實(shí)路徑:
<%=application.getRealPath("Test.jsp")%>
</body>
</html>
運(yùn)行結(jié)果如圖 1 所示。
圖1 利用application對(duì)象查找Servlet有關(guān)的屬性信息
管理應(yīng)用程序?qū)傩?/span>
application 對(duì)象與 session 對(duì)象相同,都可以設(shè)置屬性。但是,兩個(gè)屬性的有效范圍是不同的。
在 session 對(duì)象中,設(shè)置的屬性只在當(dāng)前客戶的會(huì)話范圍(session scope)有效,客戶超過預(yù)期時(shí)間不發(fā)送請(qǐng)求時(shí),session 對(duì)象將被回收。
在 application 對(duì)象中設(shè)置的屬性在整個(gè)應(yīng)用程序范圍(application scope)都有效。即使所有的用戶都不發(fā)送請(qǐng)求,只要不關(guān)閉應(yīng)用服務(wù)器,在其中設(shè)置的屬性也是有效的。
例2:以 application 對(duì)象管理應(yīng)用程序?qū)傩浴S?application 對(duì)象的 setAttribute() 和 getAttribute() 方法實(shí)現(xiàn)網(wǎng)頁計(jì)數(shù)器功能,代碼如下:
<%@ page contentType="text/html;charset=utf-8"%>
<html>
<head>
<title>application對(duì)象實(shí)現(xiàn)網(wǎng)頁計(jì)數(shù)器</title>
<head>
<body>
<%
int n=0;
if(application.getAttribute("num")==null)
n=1;
else
{
String str=application.getAttribute("num").toString();
//getAttribute("num")返回的是Object類型
n=Integer.valueOf(str).intValue()+1;
}
application.setAttribute("num",n);
out.println("您好,您是第"+application.getAttribute("num")+"位訪問客戶!");
%>
</body>
</html>
運(yùn)行結(jié)果如圖 2 所示。
圖2 網(wǎng)站計(jì)數(shù)器