ServletContext

整个JavaWeb工程也可以用一个对象来表示,这个对象就是ServletContext,在一个web应用中全局唯一,全局共享,可以实现servlet间通信。

事先知道的静态属性

servlet的 静态属性。
可以在web.xml文件中的中定义,获取方法是使用getInitParameter(),获取的属性是String类型的。

事先不知道动态属性

servlet的动态属性。
也可以在一个servlet中添加了一个域对象数据,在另一个servlet中访问到,相关方法是getAttribute()和setAttribute()和removeAttribute()。相关属性是Object类型的。
a.java:

  1. // 获取代表某一个JavaWeb工程的ServletContext对象
  2. // Context对象是一个域对象,可以往某一个域对象中存放数据,并且还可以取出存放的数据
  3. ServletContext context = this.getServletContext();
  4. // 把username放到context域对象中
  5. context.setAttribute("username", "张三");
  6. // 取出context域对象中的数据
  7. Object result = context.getAttribute("username");

在b.java中:

  1. // 取出context域对象中的数据
  2. Object result = context.getAttribute("username");

在这里获取到的username和a.java中是一样的。

读取外部资源配置文件信息

相关常用方法:

getResource

返回URL类型的对象,路径是相对于web应用的

  1. ServletContext ctx = this.getServletContext();
  2. URL url = ctx.getResource("/WEN-NIF/classes/log4j.properties");
  3. InputStream in = url.openStream();

getResourceAsStream

返回InputStream对象

  1. ServletContext ctx = this.getResourceAsStream();
  2. InputStream in2 = ctx.getResource("/WEN-NIF/classes/log4j.properties");

getRealPath

返回web资源的绝对路径,是String类型

  1. ServletContext ctx = this.getRealPath();
  2. String path = ctx.getResource("/WEN-NIF/classes/log4j.properties");
  3. FIle f = new File(path);
  4. InputStream in3 = new FileInputStream(f);

ServletConfig

Servlet在初始化过程中,参数将被封装到ServletConfig;
每个Servlet支持设置一个或多个;
作用域是Servlet,非全局共享

可以通过ServletConfig对象管理相关配置信息(web.xml文件的标签下信息)。

  1. <init-param>
  2. <param-name>encoding</param-name>
  3. <param-value>test-utf-888</param-value>
  4. </init-param>

获取ServletConfig对象:
ServletConfig sc = this.getServletConfig();
String encoding = sc.getInitParameter(“encoding”);//值为test-utf-888