JSP | application 对象详解 & 网站计数器实现
原作者为 RioTian@cnblogs, 本作品采用 CC 4.0 BY 进行许可,转载请注明出处。
本篇学习自:C语言中文网,部分内容转载仅供学习使用。
\]
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 对象详解 & 网站计数器实现的更多相关文章
- jsp request 对象详解
转自:http://www.cnblogs.com/qqnnhhbb/archive/2007/10/16/926234.html 1.request对象 客户端的请求信息被封装在request对象中 ...
- Application对象详解
定义// import javax.servlet.ServletContext;// ServletContext类:用于表示应用程序的上下文// 取得application对象ServletCon ...
- JavaWeb学习----JSP内置对象详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- SpringBoot配置文件 application.properties详解
SpringBoot配置文件 application.properties详解 本文转载:https://www.cnblogs.com/louby/p/8565027.html 阅读过程中若发现 ...
- django中request对象详解(转载)
django中的request对象详解 Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将 HttpRequest对象 作为第一个参数传入该函数. ...
- Window 对象详解 转自 http://blog.csdn.net/jcx5083761/article/details/41243697
详解HTML中的window对象和document对象 标签: HTMLwindowdocument 2014-11-18 11:03 5884人阅读 评论(0) 收藏 举报 分类: HTML& ...
- mvc-servlet---ServletConfig与ServletContext对象详解(转载)
ServletConfig与ServletContext对象详解 一.ServletConfig对象 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为s ...
- dom对象详解--document对象(一)
document对象 Document对象代表整个html文档,可用来访问页面中的所有元素,是最复杂的一个dom对象,可以说是学习好dom编程的关键所在. Document对象是window对象的一 ...
- jQuery的deferred对象详解(一)
最近一段时间,都在研究jquery里面的$.Deffered对象,几天都搞不明白,其中源码的运行机制,网上查找了相关的资料,<jQuery的deferred对象详解>阮一峰老师的文章,里面 ...
- [转] jQuery的deferred对象详解
jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本. 每个版本都会引入一些新功能.今天我想介绍的,就是从jQuery 1.5.0版本开始引入的一个新功能----deferred对象. ...
随机推荐
- socket链接和发送demo
Socker 包是创建客户端的,用于链接服务器: ServerSocket 包是创建服务器的,启动端口进行监听等待链接 socket客户端-----------------java.lang.Stri ...
- lua完整学习笔记
lua注释 -- 单行注释 --[[ 多行注释 ]]-- lua数据结构 nil 无效值与Java的Null类似,但是在条件表示中是false boolean 布尔值,tu ...
- 11 HTTP的特点,优点和缺点
[toc] # HTTP的五大特点 # HTTP的优点 1. 最大的优点:简单.灵活和易于拓展 2. 拥有成熟的软硬件环境,应用的非常广泛,是互联网的基础设施 3. 是无状态的,可以轻松实现集群化, ...
- 前端传递Base64字符串,后端转流存入OSS
工具类 public static BufferedInputStream base64Convert(String base64) { // 解码 base64 = base64.split(&qu ...
- AI助力软件工程师高效工作:8款神器助你优化工作流程
随着人工智能技术的不断发展,AI工具在软件工程领域展现出强大的应用潜力.善用 AI 工具可以消除繁琐事务带来的倦怠,帮助软件工程师更好地传达想法,完成更高质量的工作.我们可以将 AI 以各种方式应用于 ...
- 找到了!GitHub Copilot的最佳免费平替
在如今这个人工智能高速发展的时代,每个行业都在被AI技术影响而改变.层出不穷的AI辅助工具,让我们看到了机器正在取代一部分基础的日常工作.对于我们开发者而言,当前最炙手可热的就是GitHub Copi ...
- keycloak~对接login-status-iframe页面判断用户状态变更
上次我们说了,keycloak的login-status-iframe页面的作用,并解决了跨域情况下,iframe与主页面数据传递的方法,这一次,我们主要分析login-status-iframe.h ...
- Vulkan学习笔记之开发环境搭建
一.概述 最近因为工作需要开始学习Vulkan的相关知识,作为初学者,发现相对较好的学习资料莫过于vulkan-tutorial,在自己学习Vulkan的过程中,决定将自己的理解记录下来,一是为了加深 ...
- 技本功|Hive优化之建表配置参数调优(一)
简介: Hive是大数据领域常用的组件之一,主要用于大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的一个点,因此掌握一些Hive调优是必不可少的一项技能.影响Hive效率的主 ...
- 好玩、有趣的 Linux 命令学习神器 kmdr!
大家好,我是你们的民工哥. 所有学习Linux系统的初学者都知道,入门时除了简单的系统知识需要了解之外,其次,最重要的就是学习与理解Linux命令的用法与其应用场景. 所以,大家也会遇到这样的情况,不 ...