ServletContext
整个JavaWeb工程也可以用一个对象来表示,这个对象就是ServletContext,在一个web应用中全局唯一,全局共享,可以实现servlet间通信。
事先知道的静态属性
servlet的 静态属性。
可以在web.xml文件中的
事先不知道动态属性
servlet的动态属性。
也可以在一个servlet中添加了一个域对象数据,在另一个servlet中访问到,相关方法是getAttribute()和setAttribute()和removeAttribute()。相关属性是Object类型的。
a.java:
// 获取代表某一个JavaWeb工程的ServletContext对象
// Context对象是一个域对象,可以往某一个域对象中存放数据,并且还可以取出存放的数据
ServletContext context = this.getServletContext();
// 把username放到context域对象中
context.setAttribute("username", "张三");
// 取出context域对象中的数据
Object result = context.getAttribute("username");
在b.java中:
// 取出context域对象中的数据
Object result = context.getAttribute("username");
在这里获取到的username和a.java中是一样的。
读取外部资源配置文件信息
getResource
返回URL类型的对象,路径是相对于web应用的
ServletContext ctx = this.getServletContext();
URL url = ctx.getResource("/WEN-NIF/classes/log4j.properties");
InputStream in = url.openStream();
getResourceAsStream
返回InputStream对象
ServletContext ctx = this.getResourceAsStream();
InputStream in2 = ctx.getResource("/WEN-NIF/classes/log4j.properties");
getRealPath
返回web资源的绝对路径,是String类型
ServletContext ctx = this.getRealPath();
String path = ctx.getResource("/WEN-NIF/classes/log4j.properties");
FIle f = new File(path);
InputStream in3 = new FileInputStream(f);
ServletConfig
Servlet在初始化过程中,
每个Servlet支持设置一个或多个
作用域是Servlet,非全局共享。
可以通过ServletConfig对象管理相关配置信息(web.xml文件的
<init-param>
<param-name>encoding</param-name>
<param-value>test-utf-888</param-value>
</init-param>
获取ServletConfig对象:
ServletConfig sc = this.getServletConfig();
String encoding = sc.getInitParameter(“encoding”);//值为test-utf-888