1.ServletContext的特性
(1)ServletContext中的属性生命周期从创建开始,到服务器关闭而结束.
(2)存在ServletContext中的数据会长时间存在服务器中,占用内存,因此不建议向ServletContext中添加大数据.
2.ServletContext应用
(1)网站计数器
(2)网站在线用户的显示
(3)简单的聊天系统
3.ServletContext方法
(1)获取ServletContext实例 this.getServletContext();
(2)添加属性 setAttribute(String name,Object obj);
(3)获取值 getAttribute(String name)
(4)删除属性 removeAttribute(String name)
4.ServletContext案例(对比Session)
(1)运用上述方法实现读取ServletContext的属性值
1 package com.tsinghua; 2 3 import javax.servlet.http.*; 4 //ServletContext所在的包 javax.servlet.*; 5 import javax.servlet.*; 6 import java.io.*; 7 8 public class ServletContext1 extends HttpServlet { 9 public void doGet(HttpServletRequest req,HttpServletResponse res) { 10 try { 11 PrintWriter pw = res.getWriter(); 12 ServletContext sc = this.getServletContext(); 13 sc.setAttribute("pass","ok"); 14 pw.println("ServletContext's name is pass,it has a value"); 15 16 HttpSession hs = req.getSession(); 17 hs.setAttribute("calm","know"); 18 pw.println("Session's name is calm,it has a value"); 19 }catch(Exception ex) { 20 ex.printStackTrace(); 21 } 22 } 23 public void doPost(HttpServletRequest req,HttpServletResponse res) { 24 this.doGet(req,res); 25 } 26 }
1 package com.tsinghua; 2 3 import javax.servlet.http.*; 4 import javax.servlet.*; 5 import java.io.*; 6 7 public class ServletContext2 extends HttpServlet { 8 public void doGet(HttpServletRequest req,HttpServletResponse res) { 9 try { 10 PrintWriter pw = res.getWriter(); 11 ServletContext sc = this.getServletContext(); 12 String scName = (String)sc.getAttribute("pass"); 13 pw.println("ServletContext's value is "+scName); 14 15 HttpSession s = req.getSession(); 16 String sName = (String)s.getAttribute("calm"); 17 pw.println("Session's value is "+sName); 18 19 }catch(Exception ex) { 20 ex.printStackTrace(); 21 } 22 } 23 public void doPost(HttpServletRequest req,HttpServletResponse res) { 24 this.doGet(req,res); 25 } 26 }
(2)Servlet部署
1 <servlet> 2 <servlet-name>servletContext1</servlet-name> 3 <servlet-class>com.tsinghua.ServletContext1</servlet-class> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>servletContext1</servlet-name> 7 <url-pattern>/servletContext1</url-pattern> 8 </servlet-mapping> 9 10 <servlet> 11 <servlet-name>servletContext2</servlet-name> 12 <servlet-class>com.tsinghua.ServletContext2</servlet-class> 13 </servlet> 14 <servlet-mapping> 15 <servlet-name>servletContext2</servlet-name> 16 <url-pattern>/servletContext2</url-pattern> 17 </servlet-mapping>
(3)浏览器访问效果图: