一、概念
ServletContext代表是一个Web应用的环境(上下文)对象,ServletContext对象内部封装是该Web应用的信息,一个Web应用都只有一个ServletContext对象,这个对象全局唯一,而且工程内部的所有Servlet都共享这个对象
二、生命周期
1.创建
服务器启动的时候,会为托管的每一个web应用程序,创建一个ServletContext对象
2.销毁
Web应用从服务器移除托管,或者是关闭服务器
三、作用
1.是一个域对象(存取数据)
所有的域对象都有如下方法
方法 | 说明 |
setAttribute(name,value) | 往域对象里面添加数据,添加时以key-value形式添加 |
getAttribute(name) | 根据指定的key读取域对象里面的数据 |
removeAttribute(name) | 根据指定的key从域对象里面删除数据 |
2.可以读取web.xml配置中的全局配置参数
web.xml中的全局参数,因为不属于任何一个servlet,所以所有Servlet共享
<!-- 全局参数:所有servlet共享 -->
<context-param>
<param-name>address</param-name>
<param-value>湖南长沙</param-value>
</context-param>
public class ServletContextTest extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response){
//获取上下文对象
ServletContext context = this.getServletContext();
String address = context.getInitParameter("address");
System.out.println("address="+address);
}
}
3.根据相对路径获取当前工程目录下某文件的绝对路径
getRealPath默认会获取当前工程在tomcat里面的根目录
//获取上下文对象
ServletContext context = this.getServletContext();
//根据相对路径获取服务器上资源的绝对路径
String path = context.getRealPath(相对于该web应用的相对路径);
1.this.getClass().getClassLoader().getResource("");
获取的是当前工程在tomcat里面的 根目录(项目名称).../WEB-INF/classes/
2.this.getServletContext().getRealPath("");
获取的是当前工程在tomcat里面的 根目录(项目名称)