application隐含对象在转换为Servlet之后,会对应于 javax.servlet.ServletContext型 态的对象,首先来认识Context这个名词的字义,它具有「背景」、「上下文」的意义,ServletContext表示Servlet的 Context,与 Servlet执行时相关的背景信息、上下文信息,白话的话就是与Servlet执行时的环境信息相关的,您可以透过ServletContext来取 得,像是服务器信息、Servlet路径、Context初始变量设定等等。
ServletContext可以视为一个「Web应用程序」的代表,一个Web应用程序都会有一个Context,一个Web应用程序是一个特定URL 名称空间下的Servlet、JSP与其它相关内容集合,记得您在web.xml中定义的就是一些有关于Web应用程序的相关设定,即 <web-app>标签间定义的内容:
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <description> My JSP/Servlet Examples. </description> <display-name>JSP/Servlet Examples</display-name> </web-app>
下面这个程序示范如何取得服务器相关信息:
applicationTest.jsp
... <% out.println("Server: " + application.getServerInfo() + "<br>"); out.println("Servlet API: " + application.getMajorVersion() + "." + application.getMinorVersion() + "<br>"); out.println("Servlet Context Name: " + application.getServletContextName()); %> ...
getServerInfo()可以取得Servlet容器的相关信息,getMajorVersion()、getMinorVersion()则分别 可以取得Servlet API的主版本号与次版本号,getServletContextName()取得的则是<display-name>标签所设定的内容讯 息,执行的结果如下:
Server: Apache Tomcat/5.0.18 Servlet API: 2.4 Servlet Context Name: JSP/Servlet Examples
之前曾经介绍过如何设定Servlet初始参数,它是属于每一个Servlet的专属参数,您可以设定Context初始参数,对于同属于一个Web 应用程序的JSP/Servlet程序,都可以取得这个参数,在web.xml中加入以下的内容作示范:
使用application(ServletContext)的getInitParameter()方法可以取得Context初始参数,这个参数可以被同属于一个Web应用程序的JSP/Servlet程序取得,例如:
applicationTest.jsp
<% out.println("Context initial parameter: " + application.getInitParameter("allCount")); %>
执行结果如下:
Context initial parameter: 100
您可以使用log()方法将一些必须记录下来的信息存在记录档案中,例如:application.log("Log Test....");,在Tomcat 5中,这个记录档案是在安装目录的Logs目录下,依主机名称与日期取名,例如localhost_log.2004-05-17.txt。