本文转载于https://blog.csdn.net/rshp_520/article/details/22213399

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服务器销毁。

对于application对象的认识相关推荐

  1. [置顶] Application,Session,Cookie之Application对象

    概述 Application为全局作用域,且只有一个Application对象,它可以存储和访问任意页面的变量(数据存储类型都是Object,也就是任意类型),同时也被多页面使用(也为引用). App ...

  2. ASP.NET中application对象的用法(面试题)

    ASP.NET中application对象的用法 本文导读:Application对象是HttpApplicationState类的一个实例,Application状态是整个应用程序全局的.Appli ...

  3. 通过Application对象实现网站计数器

    Application对象是JSP的一个内建对象.当服务器启动时,该对象会被自动创建创建,直到服务器关闭该对象才会消失,并且在此期间可以被多个用户共同使用. 本列主要使用Application对象的s ...

  4. Android笔记 Application对象的使用-数据传递以及内存泄漏问题

    Application的使用 What is Application Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创 ...

  5. Android Application 对象介绍

    What is Application Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application ...

  6. Express 工具库中的 Application 对象

    var express = require('express') var app = express()app.get('/', function (req, res) {res.send('hell ...

  7. vba excel 退出编辑状态_VBA小常识(15)—Application对象

    VBA小常识(15)-Application对象 学习自杨洋老师<全民一起学VBA> Application是位于最顶端的对象,代表excel程序本身,所有对象都属于它. 1. appli ...

  8. 什么是Cookie对象,Session对象,Application对象等问题

    1.什么是Cookie对象,Session对象,Application对象 Application对象 应用程序状态:Web 应用程序的所有用户都可以访问该应用程序的状态信息 Session对象, 会 ...

  9. Application对象 简单的聊天室

    使用Application对象可以使得多个用户在访问同一个asp.net应用程序时,能够共享信息,在多个用户同时访问asp.net时,都会产生一个Application对象.通常可以把共享的数据变量存 ...

  10. JAVA-JSP内置对象之application对象获得其他信息

    相关资料: <21天学通Java Web开发> application对象获得其他信息 1.通过调用application对象的其他方法可以获得更多信息,如文件的MIME类型.获得指定Lo ...

最新文章

  1. eclipse删除perspective
  2. MySQL 记录中包含换行符
  3. C#远程调用技术WebService葵花宝典
  4. Servlet实现Session
  5. 关联规则 java_Java实现的关联规则算法
  6. 多线程原理分析面试题理解
  7. INET Sockets Tour: ioctl()
  8. java 字符串截取_java截取字符串,截串,substring和split,分割字母和数字,正则缝隙...
  9. Windows安装office出现1046错误
  10. 纯css+js打造返回顶部代码
  11. JAVA常见字符编码表
  12. [精简]托福核心词汇98
  13. 慕尼黑工业大学计算机博士申请条件,慕尼黑大学博士条件
  14. B2B是什么意思? 外贸工厂企业适合做独立站吗?
  15. 明源云客微信抢房技巧_明源云客车位线上开盘体验 - 微信抢房_软件抢房_网上选房_手机抢房_代抢房 - 爱抢房...
  16. Javascript网页打印大全
  17. python学习2——if语句、elif、if嵌套、while循环、while嵌套
  18. ABB机器人系统和出错信息
  19. 东软Unieap平台
  20. Java语言,什么是Java语言?Java的版本。

热门文章

  1. foxmail7.2怎么设置新浪的免费邮箱
  2. 启动并进入已经停止的容器
  3. 给li标签添加自定义属性
  4. 祖玛游戏源码:——天地会
  5. 想进高校工作,硕士学历所能选择的岗位有哪些?
  6. 学习HCNA的第一天
  7. Python每日一学 05——布尔运算
  8. 基于Matlab开发的整车动力系统匹配计算软件,将整车参数及性能需求输入
  9. linux信号子系统,Linux时间子系统之(三):用户空间接口函数
  10. 字节跳动系的红利 附下载地址