在Tomcat服务器中的Web的项目,也叫做Web应用程序,应用程序也是对象。
在JavaWeb开发中,使用ServletContext对象表示Web应用程序。
ServletContext对象特性
- 在一个Web应用程序中,只能存在一个ServletContext对象
- 每个应用程序都有它自己所对应的一个ServletContext对象
- 在服务器启动时,为每个Web应用程序创建一个单独的ServletContext对象
- ServletContext是接口, 此接口的实现类是Tomcat引擎提供
获取ServletContext对象方法
首先一个Web应用程序
只有一个ServletContext对象
方法一
通过ServletConfig接口
获取,它提供了方法 getServletContext()
public interface ServletConfig {
ServletContext getServletContext();
}
方法二
通过继承的HttpServlet类的父类GenericServlet
获取,GenericServlet类
提供了方法getServletContext()
class Context1Servlet extends HttpServlet {}
↓
public abstract class HttpServlet extends GenericServlet{
↓
public abstract class GenericServlet implements Servlet,ServletConfig, Serializable {
//⽤transient关键字标记的成员变量不参与序列化过程。
private transient ServletConfig config;
public ServletConfig getServletConfig() {
return this.config;
}
public ServletContext getServletContext() {
return this.getServletConfig().getServletContext();
}
//省略其他
}
Servlet代码
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
//⽅式1:通过ServletConfig对象获取,它提供了⽅法 getServletContext()
ServletConfig config = super.getServletConfig();
ServletContext servletContext = config.getServletContext();
System.out.println("servletContext = " + servletContext);
//⽅式2:常用方法,通过继承的HttpServlet类的⽗类GenericServlet获取, GenericServlet类
提供了⽅法 getServletContext ()
ServletContext servletContext2 = super.getServletContext();
System.out.println("servletContext2 = " + servletContext2);
}
ServletContext对象的作用
- 获取Web应用程序的初始化参数
web.xml配置Web应用程序的初始化参数
<!--配置的是WEB程序的初始化参数-->
<context-param>
<param-name>java</param-name><!--键 -->
<param-value>servlet</param-value><!--值 -->
</context-param>
API
方法 | 返回值 | 描述 |
---|---|---|
getInitParameter(String name) | String | 获取Web应用程序的初始化参数 |
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
* 获取ServletContext对象
* ⽗类的⽅法
* org.apache.catalina.core.ApplicationContextFacade实现接⼝
ServletContext
*/
ServletContext context = getServletContext();
System.out.println(context);
//context对象,获取配置⽂件中的初始化参数
String value = context.getInitParameter("java");
System.out.println(value);
}
- 获取Web应用程序下任意资源的绝对路径
- ServletContext作为域对象,存储数据(共享信息etc.)