application变量是对一个web application有效的全局变量,在保存一些全局有效的值时非常有用。与session变量不同,application变量可以用application.getAttribute()和application.setAttribute()来访问。
在jsp中,可以自动引用application变量,指代当前的web 应用。(有关web 应用,我将在另外的地方讨论。)
在引用application 变量时,必须使用同步。并且,需要测试一个application属性是否已经存在。请仔细研究下面的代码,在下面,设置了一个叫“change"的application 属性,保存一个整型值。关于在servlet中使用application变量,方法与下面的代码一致,不过,需要先说明一个application如下:
servletContext application=getServletContext();
后面的一段函数是env.Java的片断,可以看看在servlet中如何使用application变量的。
Integer count = null;
synchronized (application) {
count = (Integer) application.getAttribute("change");
if (count == null)
count = new Integer(0);
count = new Integer(count.intValue() + 1);
application.setAttribute("change", count);
}
private void printApplication(PrintWriter pw, HttpServletRequest req)
throws IOException
{
ServletContext application = getServletContext();
pw.println("
Application Information:
");pw.println("
pw.print("
Major Version");pw.println(application.getMajorVersion());
pw.print("
Minor Version");pw.println(application.getMinorVersion());
pw.print("
Server Info");pw.println(application.getServerInfo());
pw.print("
Real Path (of pathinfo)");pw.println(application.getRealPath(req.getPathInfo()));
pw.print("
Mime-type (of pathinfo)");pw.println(application.getMimeType(req.getPathInfo()));
pw.println("
");pw.println("
Application Variables:
");pw.println("
Enumeration e = application.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String) e.nextElement();
pw.print("
");pw.print(name);
pw.print("
");pw.println(application.getAttribute(name));
}
pw.println("
");}
%>
Counter