1、ServletContext是什么?
- javax.servlet.ServletContext接口,Servlet规范
2、了解内容
- Tomcat服务器对ServletContext接口的实现类完整类名:org.apache.catalina.core.ApplicationContextFacade
JvaWeb程序员还是只要面向ServletContext接口调用方法即可,不需要关心Tomcat具体的实现
3、ServletContext到底是什么?什么时候被创建?什么时候被销毁?创建几个?
- ServletContext被翻译为:Servlet上下文【Context一般翻译为上下文】
- 一个webapp只有一个web.xml文件,web.xml文件在服务器启动阶段被解析
- 一个webapp只有一个ServletContext对象,ServletContext在服务器启动阶段被实例化
- ServletContext在服务器关闭的时候会被销毁
- ServletContext对应的是web.xml文件,是web.xml文件的代表
- ServletContext对象是所有Servlet对象四周环境的代表【在同一个webapp中,所有Servlet对象共享同一个“四周环境对象”,该对象就是ServletContext】

- 所有的用户若共享同一个数据,可以将这个数据放到ServletContext对象中
- 一般放到ServletContext对象中的数据不建议涉及到修改操作,因为ServletContext对象是多线程共享的一个对象,修改的时候会存在线程安全问题
4、ServletContext接口中有哪些常用的方法?
| 方法 | 作用 |
|---|---|
| void setAttribute(String name,Object object) | 向ServletContext范围中添加数据(map.put(key,value);) |
| Object getAttribute(String name) | 从ServletContext范围中获取数据(Object value = map.get(key);) |
| void removeAttribute(String name) | 移除ServletContext范围中的数据(map.remove(key);) |
| String getInitParameter(String name) | |
| Enumeration getInitParameterNames() | |
| String getRealPath(String path) |
5、以上方法演示图如下
6、Servlet、ServletConfig、ServletContext之间的关系?
- 一个Servlet对应一个ServletConfig,100个Servlet对应100个ServletConfig
- 所有的Servlet共享一个ServletContext对象
-
7、ServletContext是一个怎样的范围?
所有用户共享的一个范围对象,我们一般把ServletContext变量命名为:application
- 可见这个对象代表一个应用内,一个webapp只有一个这样的对象,范围极大!





