servletContext接口存值取值与删除值透彻解析

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中:
servletContext接口存值取值与删除值透彻解析_第1张图片
进行读取值的servlet中:
servletContext接口存值取值与删除值透彻解析_第2张图片
第三个servlet中进行将存储的servlet值进行删除:
servletContext接口存值取值与删除值透彻解析_第3张图片
已经将servlet存储的值删除掉,再次查看读取servlet值的运行情况,
如下图,出现报错,无法读取到存储的servlet值:
servletContext接口存值取值与删除值透彻解析_第4张图片
原理解释:
简单的理解是就是servletContet是共用的空间,有人放进去东西才能从里面取出东西,如果里面是空的,根本不存在东西就无法取出,运行第一个servlet的时候,就是往空间中存放东西,第二个servlet运行的时候就是看一下空间里面的东西进行查看是否存在,当删除这个值的时候,就是将东西取出来,空间再次成为原始的状态,没有任何东西,再次去查看空间的时候,都不存在了

你可能感兴趣的:(javaWeb,java,servlet,servletContext,eclipse,javaWeb)