Servlet容器在启动的时候会为每个servlet创建一个ServletContext对象,代表了当前的web应用,是在web应用中全局唯一的,所以在任何一个servlet中访问的都是同一个ServletContext对象,所以我们需要通过配置文件来定义ServletContext对象的配置参数,这样,这些参数就可以在不同的Servlet中读取到。
如果不同Servlet之间的共享信息不是事先知道的呢?
ServletContext提供了在普通类中增删改查的函数:
this.getServletContext().setAttribute("GlobalData1","GlobalValue1");
this.getServletContext().getAttribute("GlobalData1");
this.getServletContext().removeAttribute("GlobalData1");
总结ServletContext:
1.通过配置文件共享全局配置信息
2.通过ServletContext属性事先不同Servlet之间的通信
3.读取资源配置文件信息
4.Servlet转发
如何读取外部资源配置文件信息?
可以通过ServletContext的几个方法来读取外部资源配置文件信息:
1.getResource() 2.getResourceAsStream() 3.getRealPath()
例子:
URL url=ctx.getResource("/WEB_INF/classes/log4j.properties");
InputStream in =url.openStream();
String propertyValue=GeneralUtil.getProperty("log4j.rootLogger",in);
例子2:
InputStream in2=ctx.getResourceAsStream("/WEB_INF/classes/log4j.properties");
String p2= GeneralUtil.getPropery("log4j.rootLogger",in2);
例子3:
String path=ctx.getRealPath("/WEB_INF/classes/log4j.properties");
File f=new File(path);
InputStream in3=new FileInputStream(f);
String p3=GeneralUtil.getPropery("log4j.rootLogger",in3);