JSP | application 對象詳解 & 網站計數器實現


原作者為 RioTian@cnblogs, 本作品采用 CC 4.0 BY 進行許可,轉載請注明出處。

本篇學習自:C語言中文網,部分內容轉載僅供學習使用。


\[QAQ \]


JSP application 對象用於保存應用程序的公用數據,服務器啟動並自動創建 application 對象后,只要沒有關閉服務器,application 對象就一直存在,所有用戶共享 application 對象。

API - 查找 Servlet 有關的屬性信息

JSP application 對象是 javax.servlet.ServletContext 類的實例,這有助於查找有關 Servlet 引擎和 Servlet 環境的信息。它的生命周期從服務器啟動到關閉。在此期間,對象將一直存在。這樣,在用戶的前后連接或不同用戶之間的連接中,可以對此對象的同一屬性進行操作。在任何地方 對此對象屬性的操作,都會影響到其他用戶的訪問。

表 1 列出了 application 對象的常用方法。

方法 說明
getAttribute( String arg) 獲取 application 對象中含有關鍵字的對象
getAttributeNames() 獲取 application 對象的所有參數名字
getMajorVersion() 獲取服務器支持 Servlet 的主版本號
getMinorVersion() 獲取服務器支持 Servlet 的從版本號
removeAttribute(java.lang.String name) 根據名字刪除 application 對象的參數
setAttribute(String key,Object obj) 將參數 Object 指定的對象 obj 添加到 application 對象中,並 為添加的對象指定一個索引關鍵字

【例1】利用 application 對象查找 Servlet 有關的屬性信息包括 Servlet 的引擎名、版本號、服務器支持的 Servlet API 的最大和最小版本號、指定資源的路徑等。文件名為 index.jsp,代碼如下:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>
    JSP (SERVLET) 引擎名及版本號:
    <%=application.getServerInfo()%><br>
    服務器支持的 Server API 的最大版本號:
    <%=application.getMajorVersion()%><br>
    服務器支持的 Server API 的最小版本號:
    <%=application.getMinorVersion()%><br>
    指定資源 (文件及目錄) 的 URL 路徑:
    <%=application.getResource("sec.jsp")%><br>
    返回 sec.jsp 虛擬路徑的真實路徑:
    <%=application.getRealPath("sec.jsp")%>
</body>
</html>

運行結果如下圖所示。

利用application對象查找Servlet有關的屬性信息

管理應用程序屬性

application 對象與 session 對象相同,都可以設置屬性。但是,兩個屬性的有效范圍是不同的。

在 session 對象中,設置的屬性只在當前客戶的會話范圍(session scope)有效,客戶超過預期時間不發送請求時,session 對象將被回收。

在 application 對象中設置的屬性在整個應用程序范圍(application scope)都有效。即使所有的用戶都不發送請求,只要不關閉應用服務器,在其中設置的屬性也是有效的。

【例2】以 application 對象管理應用程序屬性。用 application 對象的 setAttribute() 和 getAttribute() 方法實現網頁計數器功能,代碼如下:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>JSP - Hello World</title>
</head>
<body>
<%
    int n = 0;
    if(application.getAttribute("num") == null) // 獲取 application 對象中含有關鍵字的對象
        n = 1;
    else{
        String str = application.getAttribute("num").toString();
        // getAttribute 返回值為 Object 類型
        n = Integer.valueOf(str).intValue() + 1;
    }
    application.setAttribute("num",n);
    out.print("Hello, 您是第 " + application.getAttribute("num") + " 位 guest!");
%>
</body>
</html>

網站計數器


免責聲明!

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



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