ServletContext是一個全局的信息存儲空間,服務器開始,其就存在,服務器關閉,其才釋放.request,一個用戶可以有多個,session,一個用戶一個,而servletContext,所有用戶公用一個.所以,為了節省空間,提高效率,在ServletCotext中放必須的,重要的所有用戶需要共享的一些信息.
Servlet上下文:Servlet上下文提供對應用程序中所有Servlet所共有的各種資源和功能的訪問。Servlet上下文API用於設置應用程序中所有Servlet共有的信息。Servlet可能需要共享他們之間的共有信息。運行於同一服務器的Servlet有時會共享資源,如JSP頁面、文件和其他Servlet。
servlet可以通過名稱將對象屬性綁定到上下文。任何綁定到上下文的屬性可以被同一個web應用的其他servlet使用。ServletContext接口的下列方法允許訪問這種功能:
setAttribute
getAttribute
getAttributeNames
removeAttribute
分布式容器中的上下文屬性 上下文屬性對於創建它們的VM來說是本地的。這防止ServletContext屬性存儲於分布式容器的共享內存中。當信息需要在運行於分布式環境中的servlet之間共享時,信息被放入會話中(參見第7章“會話”),存儲於數據庫中.
/** * 項目啟動監聽,全局配置信息初始化,存儲 * @author yangfei * * */ @Component public class StartupListener implements InitializingBean, ServletContextAware { ... ... @Override public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } /** * InitializingBean 接口方法 * 用於初始化工作 */ @Override public void afterPropertiesSet() throws Exception { loadParams(); loadConfig(); } }