(1)application对象作用:用于保存应用程序中的公有数据,实现了多客户之间的数据共享。
(2)application对象的生命周期:从Web服务器启动,直到Web服务器关闭。
(3)application对象的作用范围:application对象是一个应用程序级的对象,它作用于当前Web应用程序,也即作用于当前网站,所有访问当前网站的客户都共享一个application对象。
(4)application对象的基类是:javax.servlet.ServletContext类。
(5)application对象的常用方法
方法名 |
描述 |
String getAttribute(String name) |
根据属性名称获取属性值。 |
Enumeration getAttributeNames() |
获取所有的属性名称。 |
void setAttribute(String name, Object object) |
设置属性,指定属性名称和属性值。 |
void removeAttribute(String name) |
根据属性名称删除对应的属性。 |
ServletContext getContext(String uripath) |
获取指定URL的ServletContext对象。 |
String getContextPath() |
获取当前Web应用程序的根目录。 |
String getInitParameter(String name) |
根据初始化参数名称,获取初始化参数值。 |
int getMajorVersion() |
获取Servlet API的主版本号。 |
int getMinorVersion() |
获取Servlet API的次版本号。 |
String getMimeType(String file) |
获取指定文件的MIME 类型。 |
String getServletInfo() |
获取当前Web服务器的版本信息。 |
String getServletContextName() |
获取当前Web应用程序的名称。 |
void log(String message) |
将信息写入日志文件中。 |
实例一:使用application对象获取初始化参数
一般来说,在web.xml文件中,设置初始化参数有如下两种方式:
(1)设置系统范围内的初始化参数
对于系统范围内的初始化参数,可通过ServletContext 接口的getInitParameter(String name)方法,根据指定的参数名,获取对应的参数值。
(2)针对单个Servlet文件或JSP文件设置初始化参数
对于针对单个Servlet文件或JSP文件设置初始化参数,可通过ServletConfig接口的 getInitParameter(String name)方法,根据指定的参数名,获取对应的参数值。
在web.xml文件中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<web-app version=
"2.5"
xmlns=
"http://java.sun.com/xml/ns/javaee"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:
//java.sun.com/xml/ns/javaee
http:
//java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>appName</param-name>
<param-value>MyJSP</param-value>
</context-param>
<context-param>
<param-name>appVersion</param-name>
<param-value>
1.0
.
0
</param-value>
</context-param>
</web-app>
|
在index.jsp文件中:
1
2
3
4
5
6
7
8
|
<%
//String appName=application.getInitParameter("appName");
//String appVersion=application.getInitParameter("appVersion");
String
appName=getServletContext().getInitParameter(
"appName"
);
String
appVersion=getServletContext().getInitParameter(
"appVersion"
);
%>
应用程序的名称:<%=appName%><br>
应用程序的版本:<%=appVersion%>
|
输出结果:
应用程序的名称:MyJSP
应用程序的版本:1.0.0
实例二:使用application对象实现网站计数器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<%
if
(application.getAttribute(
"counter"
) ==
null
)
{
application.setAttribute(
"counter"
,
"1"
);
}
else
{
String
strnum =
null
;
strnum = application.getAttribute(
"counter"
).toString();
int
icount =
0
;
icount = Integer.valueOf(strnum).intValue();
icount++;
application.setAttribute(
"counter"
, Integer.toString(icount));
}
%>
您是第<%=application.getAttribute(
"counter"
) %>位访问者!
|
session对象和application对象的比较
(1) 两者的作用范围不同:
session对象是用户级的对象,而application对象是应用程序级的对象。
一个用户一个session对象,每个用户的session对象不同,在用户所访问网站的多个页面之间共享同一个session对象。
一个Web应用程序一个application对象,每个Web应用程序的application对象不同,但一个Web应用程序的多个用户之间共享同一个application对象。
在同一个网站下:
n每个用户的session对象不同
n所用用户的application对象相同
在不同网站下:
n每个用户的session对象不同
n每个用户的application对象不同
(2) 两者的生命周期不同:
session对象的生命周期:用户首次访问网站创建,用户离开该网站 (不一定要关闭浏览器) 消亡。
application对象的生命周期:启动Web服务器创建,关闭Web服务器销毁。