ServletContext接口定义了一系列的与容器通信的方法,例如,得到文件的MIME类型,转发请求,或是写日志文件。每一个Web应用程序(一个Web应用程序是servlet和内容的集合,以.WAR文件的格式被安装在服务器的URL命名空间的特定的子集中,例如/catalog)在每一个java虚拟机里面都有一个上下文(context)。ServletContext植根于Web服务器的一个已知路径里面。例如,一个servlet上下文可以位于http://www.mycorp.com/catalog。所有的以/catalog开始的请求(被叫做上下文路径),都被路由到与这个ServletContext有关的Web应用程序里面。当程序被部署在分布式环境中时,每一个虚拟机将有一个上下文实例。在这种情况下,上下文不能用来存储全局共享信息。用一个额外的资源来存储信息,例如数据库。
ServletContext对象被包含在ServletConfig对象中,ServletConfig对象被容器产生并且通过servlet的init()方法传入servlet对象。
ServletContext接口定义了Web应用程序的servlet图。容器负责提供该接口的实现。使用ServletContext对象,servlet可以记录事件,得到资源的URL引用,设置和存储属性,这些属性可以被上下文中的其他servlet访问。
初始化参数(Initialization Parameters)
上图的方法用来获得上下文的初始化参数,该初始化参数被定义在部署描述文件中。初始化参数一般被程序开发人员用来传递一些setup信息,例如网站管理员的email地址和存有重要数据的系统的名字。
配置方法(Configuration methods)
上图的方法是Servlet3.0中加入的,用来程序性定义servlet、过滤器、和他们的映射url。这些方法只在程序初始化时被ServletContextListener的contextInitialized()方法调用或是被ServletContainerInitailizer的onStartup()方法调用.这些方法是给框架开发者准备的。
上下文属性(Context Attributes)
一个servlet可以绑定一个对象属性到上下文。任何一个被绑定到上下文的属性都可以被同一个Web应用程序的其他servlet获得。上图是获得、设置、删除属性的方法。分布式环境要注意不要用上下文属性,否则会带来问题,应该用session或是数据库或是EJB组建来代替。
资源(Resource)
上图方法可以直接获得Web应用程序中的静态内容文档,包括 HTML、GIF、JPEG文件。具体规则可以看api。