Application对象概述

关于在jsp中application对象用法
application对象
1 什么是application对象 ?
(1) 当Web服务器启动时,Web服务器会自动创建一个application对象。application对象一旦创建,它将一直存在,直到Web服务器关闭。
一个Web服务器通常有多个Web服务目录 (网站),当Web服务器启动时,它自动为每个Web服务目录都创建一个application对象,这些application对象各自独立,而且和Web服务目录一一对应。
访问同一个网站的客户都共享一个application对象,因此,application对象可以实现多客户间的数据共享。
访问不同网站的客户,对应的application对象不同。
(2) application对象的生命周期:从Web服务器启动,直到Web服务器关闭。
注意:一个Web应用程序启动后,将会自动创建一个application对象,而且在整个应用程序的运行过程中只有一个application对象,也即所有访问该网站的客户都共享一个application对象。

(3) application对象的作用范围:application对象是一个应用程序级的对象,它作用于当前Web应用程序,也即作用于当前网站,所有访问当前网站的客户都共享一个application对象。

具体来说:不管哪个客户来访问网站A,也不管客户访问网站A下哪个页面文件,都可以对网站A的application对象进行操作,因为,所有访问网站A的客户都共用一个application对象。
因此,当在application对象中存储数据后,所有访问网站A的客户都能够对其进行访问,实现了多客户之间的数据共享。

(4) application对象的基类是:javax.servlet.ServletContext类。

注意:有些Web服务器不直接支持使用application对象,必须用ServletContext类来声明application对象,再调用getServletContext()方法来获取当前页面的application对象。

(5) ServletContext类:用于表示应用程序的上下文。

一个ServletContext类的对象表示一个Web应用程序的上下文。
具体来说:在Web服务器中,提供了一个Web应用程序的运行时环境,专门负责Web应用程序的部署、编译、运行以及生命周期的管理,通过ServletContext类,可以获取Web应用程序的运行时环境信息。

常识:JSP引擎、Servlet引擎、JSP容器和Servlet容器,都是指Web服务器,Web服务器用于管理所有Web应用程序。

(6) 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)将信息写入日志文件中。

2 使用application对象存储数据

(1) 设置application对象的属性和获取application对象的属性
测试代码
TestApplication.jsp
用户名:
密 码:
<%

application.setAttribute(“username”, request.getParameter(“username”));

application.setAttribute(“pwd”, request.getParameter(“pwd”));

%>
测试代码

TestCommon.jsp
在TestCommon.jsp 页面中,通过application对象获取属性,注意TestApplication.jsp和TestCommon.jsp这两个页面之间没有任何关联,只要通过application对象设置了属性,那么就可以在任何页面,通过application对象获取属性或者删除属性。
用户名:

密 码:

(2) 删除application对象的属性

测试代码

TestCommon.jsp

在TestCommon.jsp 页面中,删除application对象的属性。
<%

application.removeAttribute(“username”);

application.removeAttribute(“pwd”);

%>
用户名:

密 码:

3 使用application对象实现网站计数器(常用)

测试代码:

TestApplication01.jsp
<%!

ServletContext application;
synchronized void countPeople() {
application = getServletContext();
Integer number =(Integer)application.getAttribute(“number”);
if (number == null) {
number = new Integer(1);
application.setAttribute(“number”, number);
} else {
number = new Integer(number.intValue() + 1);
application.setAttribute(“number”, number);
}

}

%>
<%

if (session.isNew()) {
countPeople();
}
int personCount = ((Integer)application.getAttribute(“number”)).intValue();

%>
欢迎访问本网站,您是第 个访问用户!

4 使用application对象获取初始化参数

(1) 一 般来说,在web.xml文件中,设置初始化参数有如下两种方式:

n 设置系统范围内的初始化参数

n 针对单个Servlet文件或JSP文件设置初始化参数

对于系统范围内的初始化参数,可通过ServletContext 接口的getInitParameter(String name)方法,根据指定的参数名,获取对应的参数值。

对于针对单个Servlet文件或JSP文件设置初始化参数,可通过ServletConfig接口的 getInitParameter(String name)方法,根据指定的参数名,获取对应的参数值。
(2) 如何设置系统范围内的初始化参数

在web.xml文件中,可利用context-param元素来设置系统范围内的初始化参数。context-param元素应该包含param-name、param-value以及可选的description子元素,如下所示:

support-email
blackhole@mycompany.com

web.xml文件的示例:

<web-app version=”2.4″

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”>

appName

MyWebTest
appVersion

Version 1.0

MyTest01.jsp
测试代码

TestApplication02.jsp
使用application对象获取初始化参数:
<%

String appName = getServletContext().getInitParameter(“appName”);

String appVersion = getServletContext().getInitParameter(“appVersion”);

%>

应用程序的名称:

应用程序的版本:
修改web.xml文件,添加蓝色字体部分:
<web-app version=”2.4″

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”>
appName

MyWebTest
appVersion

Version 1.0
MyTest01.jsp

5 使用application对象获取Web应用程序的环境信息

测试代码:

TestApplication03.jsp
<%@ page language=”java” contentType=”text/html; charset=GBK”

pageEncoding=”GBK”%>

使用application对象获取Web应用程序的环境信息

获取当前Web服务器的版本信息:

获取Servlet API的主版本号:

获取Servlet API的次版本号:

获得指定URL的ServletContext对象:

<%

ServletContext sc = application.getContext(“/ch3/TestApplication01.jsp”);

out.println(sc.getServerInfo());

%>

获取当前Web应用程序的名称:

获取当前Web应用程序的上下文路径:
测试结果:

6 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服务器销毁。
————————————————
版权声明:本文为CSDN博主「小小莫者」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/rshp_520/article/details/22213399

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值