ServletContext可以想象为服务器中的一个公用空间,可以被所有的客户访问
ServletContext也是以“名-值”的形式保存数据,其用法有:
- 得到ServletContext:this.getServletContext();
- 添加属性:setAttribute(String name,Object ob);
- 得到值: getAttribute(String),返回Object
- 删除属性:removeAttribute(String name)
ServletContext中的属性的生命周期从创建开始,到服务器关闭而结束
注意:因为存在ServletContext中的数据会长时间的保存在服务器,会占用内存,因此我们建议不要向serveltContext中添加过大的数据
例子——向ServletContext中添加属性:
/** * @(#)TestServletContext1.java *向ServletContext中添加属性 * * @author * @version 1.00 2017/3/30 */ package com.chongqing; import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class TestServletContext1 extends HttpServlet{ public void doGet(HttpServletRequest req,HttpServletResponse res){ try { res.setContentType("text/html;charset=UTF-8"); PrintWriter pw=res.getWriter(); ServletContext sc = this.getServletContext(); //得到ServletContext sc.setAttribute("myContext","TestServletContext");//往ServletContext添加属性 pw.println("向servletContext中添加了一个属性:myContext"); } catch (Exception ex) { ex.printStackTrace(); } } public void doPost(HttpServletRequest req,HttpServletResponse res){ this.doGet(req,res); } }
例子——获得ServletContext中的属性:
/** * @(#)TestServletContext2.java *获得ServletContext中的属性 * * @author * @version 1.00 2017/3/30 */ package com.chongqing; import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class TestServletContext2 extends HttpServlet{ public void doGet(HttpServletRequest req,HttpServletResponse res){ try { res.setContentType("text/html;charset=UTF-8"); PrintWriter pw=res.getWriter(); ServletContext sc = this.getServletContext(); //得到ServletContext String myfo = (String)sc.getAttribute("myContext");//从ServletContext获取属性myContext的值 pw.println("从ServletContext获取属性myContext的值为:"+myfo); } catch (Exception ex) { ex.printStackTrace(); } } public void doPost(HttpServletRequest req,HttpServletResponse res){ this.doGet(req,res); } }