DBMNG数据库管理与应用

才能是来自独创性。独创性是思维、观察、理解和判断的一种独特的方式。
当前位置:首页 > 经验分享 > Java开发

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服务器销毁。
来自IT公司面试手册
本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号