application 對象代表整個 Web 應用的全局上下文,是 ServletContext 接口實例,生命周期與應用同步。本文講解其核心功能:資源路徑獲取、初始化參數讀取、屬性共享、請求轉發/包含。
javax.servlet.ServletContext 實例
<% String path = application.getRealPath("/"); %>
<h3>真實路徑: <%=path%></h3>
將虛擬路徑(如 /upload/)轉換為服務器磁盤絕對路徑(如 D:/Tomcat/webapps/myapp/upload/),用於文件 IO 操作。
等效寫法:getServletContext().getRealPath("/")(JSP 隱含方法)。
web.xml 配置:
<context-param>
<param-name>adminEmail</param-name>
<param-value>admin@example.com</param-value>
</context-param>
JSP 獲取:application.getInitParameter("adminEmail")
setAttribute(name, value)getAttribute(name)removeAttribute(name)典型場景:在線用戶計數器、系統公告、緩存數據字典。
RequestDispatcher getRequestDispatcher(String path):路徑相對應用根目錄(以 / 開頭)。RequestDispatcher getNamedDispatcher(String name):按 Servlet 名稱獲取。InputStream is = application.getResourceAsStream("/WEB-INF/classes/config.properties");
優於文件路徑方式,支援 WAR 包部署、類加載器隔離環境。
String mime = application.getMimeType("image.png"); // 返回 "image/png"
@WebListener
public class AppInitializer implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
ServletContext ctx = sce.getServletContext();
// 載入配置、初始化連接池、啟動定時任務
ctx.setAttribute("dataDict", loadDictionary());
}
}