servletContext接口存值取值与删除值透彻解析
ServletContext接口:ServletContext对象是在web服务器启动时就被创建了,是web服务器(java虚拟机)创建的ServletContext对象,每一个web项目只有一个ServletContext对象。ServletContext对象的作用:1、获取web应用程序的初始化参数2、在web应用程序能共享数据3、获取web项目下的资源文件先说第二个作用:想要共享数据,就必须
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运行的时候就是看一下空间里面的东西进行查看是否存在,当删除这个值的时候,就是将东西取出来,空间再次成为原始的状态,没有任何东西,再次去查看空间的时候,都不存在了
更多推荐
所有评论(0)