ServletContext
是什么?
是服务器端的一块公共的存储区域,可供所有客户存取数据。(全局区域)
一个web应用程序只有一个ServletContext
在Servlet中获取ServletContext
ServletContext servletcontext=this.getServletContext();
ServletContext servletcontext1=req.getServletContext();
- 设值、取值和删除
servletcontext.setAttribute("count", 1);
servletcontext.getAttribute("count");
servletcontext.removeAttribute("count");
- 用法
1.可以读取全局配置文件
配置文件
<!-- 配置全局变量,所有servlet都能访问 -->
<context-param>
<param-name>teachername</param-name>
<param-value>zhushen</param-value>
</context-param>
Servlet中代码
String value=this.getServletContext().getInitParameter("teachername");
resp.getWriter().print(value);
2.读取资源文件
资源文件放于根目录下,和WEB-INF同级
读取的内容
InputStream is=this.getServletContext().getResourceAsStream("db.properties");
Properties pros=new Properties();
pros.load(is);
resp.getWriter().print("driver:"+pros.getProperty("driver")+"<br>");
resp.getWriter().print("url:"+pros.getProperty("url")+"<br>");
如果资源文件在src下
InputStream is=ContextServlet.class.getClassLoader().getResourceAsStream("db.properties");
- 3.作为全局变量的应用
网站计数器网络聊天室
ServletContext servletcontext=this.getServletContext();
if(servletcontext.getAttribute("count")==null) {
servletcontext.setAttribute("count", 1);
}else{
int count=(Integer )servletcontext.getAttribute("count");
servletcontext.setAttribute("count", ++count);
}
resp.getWriter().print("您是第"+servletcontext.getAttribute("count")+"个访问该网站的人");