Application对象

简介:



(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)

获取指定URLServletContext对象。

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



     本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1341703 ,如需转载请自行联系原作者








相关文章
|
算法 Unix Linux
C语言随机数的产生(rand、srand、time函数细节讲解)
C语言随机数的产生(rand、srand、time函数细节讲解)
363 0
|
缓存 负载均衡 数据库
优化后端性能:提升Web应用响应速度的关键策略
在当今数字化时代,Web应用的性能对于用户体验至关重要。本文探讨了如何通过优化后端架构和技术手段,提升Web应用的响应速度。从数据库优化、缓存机制到异步处理等多个方面进行了深入分析,并提出了一系列实用的优化策略,以帮助开发者更好地应对日益增长的用户访问量和复杂的业务需求。
890 28
|
编解码 人工智能
DiT架构大一统:一个框架集成图像、视频、音频和3D生成,可编辑、能试玩
【5月更文挑战第23天】研究人员提出Lumina-T2X框架,统一生成和编辑图像、视频、音频及3D内容。使用Flow-based Large Diffusion Transformer (Flag-DiT)模型,实现多模态生成,支持内容编辑。尽管面临训练资源需求高、生成质量不及人类创作等问题,该框架在娱乐、广告等领域有广泛应用潜力。[论文链接](https://arxiv.org/pdf/2405.05945)
562 1
|
机器学习/深度学习 人工智能 PyTorch
Faceswap
Faceswap
697 0
|
监控 网络性能优化 网络安全
【MODBUS】Modbus主站为边缘设备通过MQTT协议上云
【MODBUS】Modbus主站为边缘设备通过MQTT协议上云
307 1
|
机器学习/深度学习 人工智能 PyTorch
Paddle 点灯人 之 Paddle介绍
首先,我想讲一下,为什么我想学习paddle,或者说为什么要学习paddle。百度已经很早就做paddle了,这可以说是国内最好的学习框架了,他可以说到现在已经非常成熟了,相对于pytorch,他的历史确实没有那么悠久,并且很多人都在用pytorch而不是paddle。不过paddle在国内来说,是比较好的,很多东西都有简单的部署,可以更好的使用,所以我也想学习paddle,也为了有更多机会。
Paddle 点灯人 之 Paddle介绍
|
机器学习/深度学习 数据采集 存储
阿里云大数据分析师ACP考试内容是什么?考试题型是什么?
最近几年阿里云的认证越来越受欢迎,很多人会通过考取阿里云的认证来提升自己的职业竞争力,其中ACP大数据分析师是很多人会考的认证,下面小编简单介绍一下,有需要的伙伴可以在认证大使上详细了解一下。
|
存储 C语言
C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数
C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数
1449 0
C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数
|
存储 机器学习/深度学习 运维
苏宁基于 AI 和图技术的智能监控体系的建设
苏宁通过 CMDB、调用链等数据构建软硬件知识图谱,在此基础上通过历史告警数据构建告警知识图谱,并最终应用知识图谱进行告警收敛和根因定位。本文主要包括运维知识图谱构建、知识图谱存储、告警收敛及根因定位等内容。
492 0
|
数据采集 Web App开发 JavaScript
了解Puppeteer,可模拟登录和模拟不同设备
了解Puppeteer,可模拟登录和模拟不同设备
1363 0