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(); } }