1、 ServletContext是一个容器,可以用来存放变量,供一个web项目中多个Servlet共享。可以存储key-value结构的数据,并且可以进行修改、获取、移除操作。
ServletContext servletContext=this.getServletContext();//获取一个ServletContext对象
servletContext.setAttribute("zx", "zhangxiang");//存值
String name=(String) servletContext.getAttribute("zx");//获取值
System.out.println("zx"+"-->"+"zhangxiang");
servletContext.removeAttribute("zx");//移除值
name=(String)servletContext.getAttribute("zx");
System.out.println("zx"+"-->"+name);
结果:
当tomcat启动时,会为每个web应用创建一个唯一的ServletContext对象代表当前Web应用.该对象不仅封装了当前web应用的所有信息,而且实现了多个servlet的数据共享.
在每个项目中可以有多个Servlet程序,每个Servlet程序都是独立的。Servlet中的配置信息可以使用ServletConfig获取,而当前这个项目的配置信息,就必须使用描述这个项目的ServletContext对象获取。
2、可以读取全局配置参数(在web.xml中的配置参数)
如在web.xml中写入如下配置参数
<context-param>
<param-name>小米</param-name>
<param-value>1</param-value>
</context-param>
<context-param>
<param-name>华为</param-name>
<param-value>2</param-value>
</context-param>
<context-param>
<param-name>中兴</param-name>
<param-value>3</param-value>
</context-param>
然后可在Servlet的doGet()方法中写如下代码:
Enumeration<String> keys=servletContext.getInitParameterNames();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
String value= servletContext.getInitParameter(key);
System.out.println(key+"--->"+value);
}
结果如图:(乱序输出,因为servletContext.getInitParameterNames()的返回值是一个枚举类型的迭代器Enumeration)
扫描二维码关注公众号,回复:
2866473 查看本文章
servletContext.getInitParameterNames()可以获取所有context-param中的键值对
servletContext.getInitParameter(key)可以通过一个键,获取对应的值
3、ServletContext可以获取Web工程中的资源文件的绝对路径
如在src中放置如下文件
从tomcat webapps文件里可以找到该文件对应的位置,在/WEB-INF/classes/目录下
然后在Servlet中通过servletContext.getRealPath()即可获取绝对路径
String path=servletContext.getRealPath("/WEB-INF/classes/c3p0-config.xml");
System.out.println(path);
结果: