ServletContext接口:

ServletContext对象是在web服务器启动时就被创建了,是web服务器(java虚拟机)创建的ServletContext对象,

每一个web项目只有一个ServletContext对象。
ServletContext对象的作用:
1、获取web应用程序的初始化参数
2、在web应用程序能共享数据
3、获取web项目下的资源文件

先说第二个作用:
想要共享数据,就必须创建数据,然后再其他的servlet中获得这些数据或者删除这些数据
进行存储值的方法如下:

ServletContext context = this.getServletContext();
//先获取对象才可以进行值的存储
context.setAttribute("key", "servlet03里面存储的,恭喜你成功了!");

得到Servlet的对象的两种方法:

1、通过ServletConfig对象:config.getServletContext();

2、直接得到:getServletContext(); //HttpServlet的父类中存在的方法(一般我们都采用这用方法,简单好用)
接下就是代码解析:
首先在在servlet里面进行存值,代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	ServletContext context = this.getServletContext();
	context.setAttribute("key", "servlet03里面存储的,恭喜你成功了!");
}

然后新建servlet进行取值:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	ServletContext context = this.getServletContext();
	Object obj = context.getAttribute("key");
	String value = obj.toString();
	response.setContentType("text/html;charset=utf-8");
	response.getWriter().print(value);
}

然后再次新建servlet进行删除存储的值

protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	response.setContentType("text/html;charset=utf-8");
	ServletContext context = this.getServletContext();
	context.removeAttribute("key");
	response.getWriter().print("已经移除key值!");
}

演示效果如下:
存储值的servlet中:
在这里插入图片描述
进行读取值的servlet中:
在这里插入图片描述
第三个servlet中进行将存储的servlet值进行删除:
在这里插入图片描述
已经将servlet存储的值删除掉,再次查看读取servlet值的运行情况,
如下图,出现报错,无法读取到存储的servlet值:
在这里插入图片描述
原理解释:
简单的理解是就是servletContet是共用的空间,有人放进去东西才能从里面取出东西,如果里面是空的,根本不存在东西就无法取出,运行第一个servlet的时候,就是往空间中存放东西,第二个servlet运行的时候就是看一下空间里面的东西进行查看是否存在,当删除这个值的时候,就是将东西取出来,空间再次成为原始的状态,没有任何东西,再次去查看空间的时候,都不存在了

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐