原作者为 RioTian@cnblogs, 本作品采用 CC 4.0 BY 进行许可,转载请注明出处。

本篇学习自:C语言中文网,部分内容转载仅供学习使用。


\[QAQ
\]

JSP application 对象用于保存应用程序的公用数据,服务器启动并自动创建 application 对象后,只要没有关闭服务器,application 对象就一直存在,所有用户共享 application 对象。

API - 查找 Servlet 有关的属性信息

JSP application 对象是 javax.servlet.ServletContext 类的实例,这有助于查找有关 Servlet 引擎和 Servlet 环境的信息。它的生命周期从服务器启动到关闭。在此期间,对象将一直存在。这样,在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作。在任何地方 对此对象属性的操作,都会影响到其他用户的访问。

表 1 列出了 application 对象的常用方法。

方法 说明
getAttribute( String arg) 获取 application 对象中含有关键字的对象
getAttributeNames() 获取 application 对象的所有参数名字
getMajorVersion() 获取服务器支持 Servlet 的主版本号
getMinorVersion() 获取服务器支持 Servlet 的从版本号
removeAttribute(java.lang.String name) 根据名字删除 application 对象的参数
setAttribute(String key,Object obj) 将参数 Object 指定的对象 obj 添加到 application 对象中,并 为添加的对象指定一个索引关键字

【例1】利用 application 对象查找 Servlet 有关的属性信息包括 Servlet 的引擎名、版本号、服务器支持的 Servlet API 的最大和最小版本号、指定资源的路径等。文件名为 index.jsp,代码如下:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
JSP (SERVLET) 引擎名及版本号:
<%=application.getServerInfo()%><br>
服务器支持的 Server API 的最大版本号:
<%=application.getMajorVersion()%><br>
服务器支持的 Server API 的最小版本号:
<%=application.getMinorVersion()%><br>
指定资源 (文件及目录) 的 URL 路径:
<%=application.getResource("sec.jsp")%><br>
返回 sec.jsp 虚拟路径的真实路径:
<%=application.getRealPath("sec.jsp")%>
</body>
</html>

运行结果如下图所示。

管理应用程序属性

application 对象与 session 对象相同,都可以设置属性。但是,两个属性的有效范围是不同的。

在 session 对象中,设置的属性只在当前客户的会话范围(session scope)有效,客户超过预期时间不发送请求时,session 对象将被回收。

在 application 对象中设置的属性在整个应用程序范围(application scope)都有效。即使所有的用户都不发送请求,只要不关闭应用服务器,在其中设置的属性也是有效的。

【例2】以 application 对象管理应用程序属性。用 application 对象的 setAttribute() 和 getAttribute() 方法实现网页计数器功能,代码如下:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<%
int n = 0;
if(application.getAttribute("num") == null) // 获取 application 对象中含有关键字的对象
n = 1;
else{
String str = application.getAttribute("num").toString();
// getAttribute 返回值为 Object 类型
n = Integer.valueOf(str).intValue() + 1;
}
application.setAttribute("num",n);
out.print("Hello, 您是第 " + application.getAttribute("num") + " 位 guest!");
%>
</body>
</html>

JSP | application 对象详解 & 网站计数器实现的更多相关文章

  1. jsp request 对象详解

    转自:http://www.cnblogs.com/qqnnhhbb/archive/2007/10/16/926234.html 1.request对象 客户端的请求信息被封装在request对象中 ...

  2. Application对象详解

    定义// import javax.servlet.ServletContext;// ServletContext类:用于表示应用程序的上下文// 取得application对象ServletCon ...

  3. JavaWeb学习----JSP内置对象详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. SpringBoot配置文件 application.properties详解

    SpringBoot配置文件 application.properties详解   本文转载:https://www.cnblogs.com/louby/p/8565027.html 阅读过程中若发现 ...

  5. django中request对象详解(转载)

    django中的request对象详解 Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将  HttpRequest对象  作为第一个参数传入该函数. ...

  6. Window 对象详解 转自 http://blog.csdn.net/jcx5083761/article/details/41243697

    详解HTML中的window对象和document对象 标签: HTMLwindowdocument 2014-11-18 11:03 5884人阅读 评论(0) 收藏 举报 分类: HTML& ...

  7. mvc-servlet---ServletConfig与ServletContext对象详解(转载)

    ServletConfig与ServletContext对象详解 一.ServletConfig对象    在Servlet的配置文件中,可以使用一个或多个<init-param>标签为s ...

  8. dom对象详解--document对象(一)

     document对象 Document对象代表整个html文档,可用来访问页面中的所有元素,是最复杂的一个dom对象,可以说是学习好dom编程的关键所在. Document对象是window对象的一 ...

  9. jQuery的deferred对象详解(一)

    最近一段时间,都在研究jquery里面的$.Deffered对象,几天都搞不明白,其中源码的运行机制,网上查找了相关的资料,<jQuery的deferred对象详解>阮一峰老师的文章,里面 ...

  10. [转] jQuery的deferred对象详解

    jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本. 每个版本都会引入一些新功能.今天我想介绍的,就是从jQuery 1.5.0版本开始引入的一个新功能----deferred对象. ...

随机推荐

  1. QA12更改使用决策时自动转至长文本并报错 上载附件 Word2007template.dotm

    *&---------------------------------------------------------------------**& Report Z_SCR_WORD ...

  2. .net下优秀的日志框架Serilog,你用上了吗?强烈推荐

    在 .NET 开发中,Serilog 是一款广受欢迎的日志库,它提供了强大的日志记录功能,具有丰富的特性和高度的可扩展性.Serilog 的优秀之处包括: 可扩展性: Serilog 可以轻松扩展以满 ...

  3. [THUPC2022 决赛] rsraogps

    [THUPC2022 决赛] rsraogps 题目描述 给序列 \(a_1,\dots,a_n\),\(b_1,\dots,b_n\),\(c_1,\dots,c_n\), 定义区间 \([l,r] ...

  4. 华企盾DSC控制台+系统运维模块连接不上问题

    解决方法:把rundll32.exe进程结束之后再点系统运维模块

  5. 数字孪生系统融合GIS系统能够在洪涝灾害防治上带来什么帮助?

    数字孪生技术与GIS系统的融合,为防治洪涝灾害方式带来了巨大的改变.这种整合的力量超越了过去单一技术的局限,为防洪抗灾工作提供了更全面.更准确的决策支持和应急响应能力. 在过去,防洪抗灾工作主要依赖于 ...

  6. MySQL 基础(四)锁

    解决并发事务带来的问题 写-写情况 任意一种事务隔离级别都不允许 "脏写" 的发生,因为这样会使得数据混乱.所以,当多个未提交的事务相继对一条记录进行改动时,就需要使得这些事务串行 ...

  7. 关于向上转型以及向下转型、instanceof的一些应用。

    一.前言 在Java编程中,我们常常遇到各种类型转换的情况,尤其是在处理继承关系的类时.本文将深入探讨Java中的向上转型(upcasting).向下转型(downcasting)以及instance ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (56)-- 算法导论6.3 2题

    文心一言 VS 讯飞星火 VS chatgpt (56)-- 算法导论6.3 2题 对于 BUILD-MAX-HEAP 中第 2行的循环控制变量 i 来说,为什么我们要求它是从A.length/2到1 ...

  9. 深入浅出Sqoop之迁移过程源码分析

    [摘要]Sqoop是一种用于在Apache Hadoop和结构化数据存储(如关系数据库)之间高效传输批量数据的工具 .本文将简单介绍Sqoop作业执行时相关的类及方法,并将该过程与MapReduce的 ...

  10. MongoDB经典故障系列六:CPU利用率太高怎么办?

    每逢电商大促,全民狂欢,但热闹是属于疯狂剁手的人们.而开发者们有的缺是"高流量.高访问.高并发"三高下带来的种种问题.为了应对大促期间的高I/O情况,企业会选择MongoDB云数据 ...