什麼是ServletContext?
要理解ServletContext的話就必須和Cookie,Session做一個對比,如右圖所示:
你可以把他想象成是一個共用的空間,可以被所有的使用者訪問,也就是說,A客戶可以訪問D,B,C也是可以的。
即有些資料是被資料共用的。
ServletContext技術講解
使用ServletContext
1: 如何得到ServletContext 執行個體
this.getServletContext();
2: 你可以把它想象成一張表,這個和Session非常相似,每一行就是一個屬性
添加屬性: setAttribute(String name, Object obj)
得到值 : getAttribute(String name) 返回Object
刪除屬性: removeAttribute(name)
3: 生命週期
ServletContext中的屬性的生命週期從建立開始,到伺服器關閉而結束。
用於寫入資料
package com.tsinghua;import javax.servlet.ServletContext;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.PrintWriter;public class ServletContextTest1 extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse res){try{//中文亂碼res.setContentType("text/html;charset=gbk");PrintWriter pw = res.getWriter();//1:得到Servlet ContextServletContext sc = this.getServletContext();//2: 添加屬性sc.setAttribute("wuxinliulei","無心流淚");pw.println("給ServletContext添加了一個屬性 wuxinliulei");}catch(Exception ex){ex.printStackTrace();}}public void doPost(HttpServletRequest req,HttpServletResponse res){this.doGet(req,res);}}
用於讀取資料
package com.tsinghua;import javax.servlet.ServletContext;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.PrintWriter;public class ServletContextTest2 extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse res){try{//中文亂碼res.setContentType("text/html;charset=gbk");PrintWriter pw = res.getWriter();//1:得到Servlet ContextServletContext sc = this.getServletContext();//2: 得到 屬性和對應的值String info = (String)sc.getAttribute("wuxinliulei");pw.println("wuxinliulei = "+info);}catch(Exception ex){ex.printStackTrace();}}public void doPost(HttpServletRequest req,HttpServletResponse res){this.doGet(req,res);}}
開啟多個瀏覽器就相當於有多個使用者進行訪問,可以證明確實是資料共用的