什么是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 Context
ServletContext 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 Context
ServletContext 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);
}
}
开启多个浏览器就相当于有多个用户进行访问,可以证明确实是数据共享的