ServletContext翻译为“Servlet上下文”。是servlet与servlet容器间直接通信的接口。j2sdkee的javadoc中说它是“a set of methods that a servlet uses to communicate with its servlet container. ” Servlet容器在启动一个web应用时,会为它创建一个servletContext对象。每个web应用有唯一的servletContext对象。同一个web应用的所有servlet对象共享一个serveltContext。Servlet对象可以通过它来访问容器中的各种资源。
在程序中可以把servletContext理解成一个存放全局变量的包
ServletContext 对象包含在ServletConfig 对象中,ServletConfig 对象在初始化Servlet 时由Web 服务器提供给Servlet。
在Servlet容器中,每个ServletContext通常只有一个实例。当 Web容器是分布式的部署在多台机器上时,那一个ServletContext在每个JVM上都有一个实例。
ServletContext中的属性只在本地的JVM中有效,不能被分布式环境中运行于其它JVM中的Servlet访问,如果需要在分布式环境中共享数据,可以把数据存放在Session,数据库或EJB中。
在Servlet容器中,但没有部署的Servlet也是允许的,这种Servlet属于一个缺省的ServletContext,这种缺省的 ServletContext不能被分布到多个JVM上。
Web服务器可能支持多个域名分享一个IP地址,这种配置叫做“虚拟主机”。在这种情况下,每个虚拟主机必须要有自己的ServletContext,而不能共享一个ServletContext。