一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

介紹一下JSP中application的用法。

 印度阿三17 2019-03-26

application對象

1 什么是application對象 ?

(1) 當(dāng)Web服務(wù)器啟動時,Web服務(wù)器會自動創(chuàng)建一個application對象。application對象一旦創(chuàng)建,它將一直存在,直到Web服務(wù)器關(guān)閉。一個Web服務(wù)器通常有多個Web服務(wù)目錄 (網(wǎng)站),當(dāng)Web服務(wù)器啟動時,它自動為每個Web服務(wù)目錄都創(chuàng)建一個application對象,這些application對象各自獨立,而且和Web服務(wù)目錄一一對應(yīng)。訪問同一個網(wǎng)站的客戶都共享一個application對象,因此,application對象可以實現(xiàn)多客戶間的數(shù)據(jù)共享。訪問不同網(wǎng)站的客戶,對應(yīng)的application對象不同。

(2) application對象的生命周期:從Web服務(wù)器啟動,直到Web服務(wù)器關(guān)閉。

注意:一個Web應(yīng)用程序啟動后,將會自動創(chuàng)建一個application對象,而且在整個應(yīng)用程序的運行過程中只有一個application對象,也即所有訪問該網(wǎng)站的客戶都共享一個application對象。

(3) application對象的作用范圍:application對象是一個應(yīng)用程序級的對象,它作用于當(dāng)前Web應(yīng)用程序,也即作用于當(dāng)前網(wǎng)站,所有訪問當(dāng)前網(wǎng)站的客戶都共享一個application對象。具體來說:不管哪個客戶來訪問網(wǎng)站A,也不管客戶訪問網(wǎng)站A下哪個頁面文件,都可以對網(wǎng)站A的application對象進行操作,因為,所有訪問網(wǎng)站A的客戶都共用一個application對象。因此,當(dāng)在application對象中存儲數(shù)據(jù)后,所有訪問網(wǎng)站A的客戶都能夠?qū)ζ溥M行訪問,實現(xiàn)了多客戶之間的數(shù)據(jù)共享。

(4) application對象的基類是:javax.servlet.ServletContext類。

注意:有些Web服務(wù)器不直接支持使用application對象,必須用ServletContext類來聲明application對象,再調(diào)用getServletContext()方法來獲取當(dāng)前頁面的application對象。

(5) ServletContext類:用于表示應(yīng)用程序的上下文。一個ServletContext類的對象表示一個Web應(yīng)用程序的上下文。具體來說:在Web服務(wù)器中,提供了一個Web應(yīng)用程序的運行時環(huán)境,專門負責(zé)Web應(yīng)用程序的部署、編譯、運行以及生命周期的管理,通過ServletContext類,可以獲取Web應(yīng)用程序的運行時環(huán)境信息。

常識:JSP引擎、Servlet引擎、JSP容器和Servlet容器,都是指Web服務(wù)器,Web服務(wù)器用于管理所有Web應(yīng)用程序。

(6) application對象的常用方法,如下所示:

方法名描述
String getAttribute(String name)根據(jù)屬性名稱獲取屬性值。
Enumeration getAttributeNames()獲取所有的屬性名稱。
void setAttribute(String name, Object object)設(shè)置屬性,指定屬性名稱和屬性值。
void removeAttribute(String name)根據(jù)屬性名稱刪除對應(yīng)的屬性。
 ServletContext getContext(String uripath)獲取指定URL的ServletContext對象。
String getContextPath()獲取當(dāng)前Web應(yīng)用程序的根目錄。
String getInitParameter(String name)根據(jù)初始化參數(shù)名稱,獲取初始化參數(shù)值。
int getMajorVersion()獲取Servlet API的主版本號。
int getMinorVersion()獲取Servlet API的次版本號。
String getMimeType(String file)獲取指定文件的MIME 類型。
String getServletInfo()獲取當(dāng)前Web服務(wù)器的版本信息。
String getServletContextName()獲取當(dāng)前Web應(yīng)用程序的名稱。
void log(String message)將信息寫入日志文件中。

2 使用application對象存儲數(shù)據(jù)

(1) 設(shè)置application對象的屬性和獲取application對象的屬性

 測試代碼

TestApplication.jsp

 <%@ page language=”java” contentType=”text/html; charset=GBK”%>

<% request.setCharacterEncoding(“GBK”);%>

<html>

<body>

<form name=”form1″ action=”" method=”post”>

用戶名:

<input type=”text” name=”username” value=”">

<br>

密 碼:

<input type=”password” name=”pwd” value=”">

<br>

<input type=”submit” name=”btSubmit” value=”提交”>

</form>

<%

application.setAttribute(“username”, request.getParameter(“username”));

application.setAttribute(“pwd”, request.getParameter(“pwd”));

%>

</body>

</html>

 測試代碼

TestCommon.jsp

 在TestCommon.jsp 頁面中,通過application對象獲取屬性,注意TestApplication.jsp和TestCommon.jsp這兩個頁面之間沒有任何關(guān)聯(lián),只要通過application對象設(shè)置了屬性,那么就可以在任何頁面,通過application對象獲取屬性或者刪除屬性。

 <%@ page language=”java” contentType=”text/html; charset=GBK”%>

<% request.setCharacterEncoding(“GBK”); %>

<html>

<body>

用戶名:<%=application.getAttribute(“username”) %><br>

密 碼:<%=application.getAttribute(“pwd”) %><br>

</body>

</html>

(2) 刪除application對象的屬性

 測試代碼

TestCommon.jsp

 在TestCommon.jsp 頁面中,刪除application對象的屬性。

 <%@ page language=”java” contentType=”text/html; charset=GBK”%>

<% request.setCharacterEncoding(“GBK”); %>

<html>

<body>

<%–刪除屬性–%>

<%

application.removeAttribute(“username”);

application.removeAttribute(“pwd”);

%>

 用戶名:<%=application.getAttribute(“username”)%><br>

密 碼:<%=application.getAttribute(“pwd”)%><br>

</body>

</html>

3 使用application對象實現(xiàn)網(wǎng)站計數(shù)器

測試代碼:

TestApplication01.jsp

 <%@ page language=”java” contentType=”text/html; charset=GBK”%>

<%@ page import=”java.util.*”%>

<% request.setCharacterEncoding(“GBK”);%>

<html>

<body>

<%!

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

%>

 <p>歡迎訪問本網(wǎng)站,您是第 <%= personCount %> 個訪問用戶!

 </body>

</html>

4 使用application對象獲取初始化參數(shù)

(1) 一 般來說,在web.xml文件中,設(shè)置初始化參數(shù)有如下兩種方式:

n 設(shè)置系統(tǒng)范圍內(nèi)的初始化參數(shù)

n 針對單個Servlet文件或JSP文件設(shè)置初始化參數(shù)

對于系統(tǒng)范圍內(nèi)的初始化參數(shù),可通過ServletContext 接口的getInitParameter(String name)方法,根據(jù)指定的參數(shù)名,獲取對應(yīng)的參數(shù)值。對于針對單個Servlet文件或JSP文件設(shè)置初始化參數(shù),可通過ServletConfig接口的 getInitParameter(String name)方法,根據(jù)指定的參數(shù)名,獲取對應(yīng)的參數(shù)值。
(2) 如何設(shè)置系統(tǒng)范圍內(nèi)的初始化參數(shù)

在web.xml文件中,可利用context-param元素來設(shè)置系統(tǒng)范圍內(nèi)的初始化參數(shù)。context-param元素應(yīng)該包含param-name、param-value以及可選的description子元素,如下所示:
<context-param>
<param-name>support-email</param-name>
<param-value>blackhole@mycompany.com</param-value>
</context-param>

web.xml文件的示例:

<?xml version=”1.0″ encoding=”UTF-8″?>

<web-app version=”2.4″

xmlns=”http://java./xml/ns/j2ee”

xmlns:xsi=”http://www./2001/XMLSchema-instance”

xsi:schemaLocation=”http://java./xml/ns/j2ee

http://java./xml/ns/j2ee/web-app_2_4.xsd”>

<context-param>

<param-name>appName</param-name>

<param-value>MyWebTest</param-value>

</context-param>

<context-param>

<param-name>appVersion</param-name>

<param-value>Version 1.0</param-value>

</context-param>

<welcome-file-list>

<welcome-file>MyTest01.jsp</welcome-file>

</welcome-file-list>

</web-app>

測試代碼

TestApplication02.jsp

 <%@ page language=”java” contentType=”text/html; charset=GBK” %>

<% request.setCharacterEncoding(“GBK”); %>

<html>

<body>

<%–使用application對象獲取系統(tǒng)范圍內(nèi)的初始化參數(shù)–%>

<font color=”Red”>使用application對象獲取初始化參數(shù):</font>

<br>

<%

String appName = getServletContext().getInitParameter(“appName”);

String appVersion = getServletContext().getInitParameter(“appVersion”);

%>

應(yīng)用程序的名稱:<%=appName%><br>

應(yīng)用程序的版本:<%=appVersion%>

</body>

</html>

修改web.xml文件,添加藍色字體部分:

<?xml version=”1.0″ encoding=”UTF-8″?>

<web-app version=”2.4″

xmlns=”http://java./xml/ns/j2ee”

xmlns:xsi=”http://www./2001/XMLSchema-instance”

xsi:schemaLocation=”http://java./xml/ns/j2ee

http://java./xml/ns/j2ee/web-app_2_4.xsd”>

<context-param>

<param-name>appName</param-name>

<param-value>MyWebTest</param-value>

</context-param>

<context-param>

<param-name>appVersion</param-name>

<param-value>Version 1.0</param-value>

</context-param>

<welcome-file-list>

<welcome-file>MyTest01.jsp</welcome-file>

</welcome-file-list>

</web-app>

5 使用application對象獲取Web應(yīng)用程序的環(huán)境信息

測試代碼:

TestApplication03.jsp

 <%@ page language=”java” contentType=”text/html; charset=GBK”

pageEncoding=”GBK”%>

<% request.setCharacterEncoding(“GBK”); %>

<html>

<body>

<h2>使用application對象獲取Web應(yīng)用程序的環(huán)境信息</h2>

 <p>

<font color=”Red”>獲取當(dāng)前Web服務(wù)器的版本信息:</font><%= application.getServerInfo() %><br>

<font color=”Red”>獲取Servlet API的主版本號:</font><%= application.getMajorVersion() %><br>

<font color=”Red”>獲取Servlet API的次版本號:</font><%= application.getMinorVersion() %>

 <p>

<font color=”Red”>獲得指定URL的ServletContext對象:</font>

<%

ServletContext sc = application.getContext(“/ch3/TestApplication01.jsp”);

out.println(sc.getServerInfo());

%>

 <p>

<%–需要在web.xml設(shè)置 display-name 元素–%>

<font color=”Red”>獲取當(dāng)前Web應(yīng)用程序的名稱:</font><%= application.getServletContextName() %>

 <p>

<font color=”Red”>獲取當(dāng)前Web應(yīng)用程序的上下文路徑:</font><%= application.getContextPath() %>

</body>

</html>

 6  session對象和application對象的比較

(1) 兩者的作用范圍不同:

session對象是用戶級的對象,而application對象是應(yīng)用程序級的對象。

 一個用戶一個session對象,每個用戶的session對象不同,在用戶所訪問網(wǎng)站的多個頁面之間共享同一個session對象。

 一個Web應(yīng)用程序一個application對象,每個Web應(yīng)用程序的application對象不同,但一個Web應(yīng)用程序的多個用戶之間共享同一個application對象。

 在同一個網(wǎng)站下:

n 每個用戶的session對象不同

n 所用用戶的application對象相同

 在不同網(wǎng)站下:

n 每個用戶的session對象不同

n 每個用戶的application對象不同

 (2) 兩者的生命周期不同:

 session對象的生命周期:用戶首次訪問網(wǎng)站創(chuàng)建,用戶離開該網(wǎng)站 (不一定要關(guān)閉瀏覽器) 消亡。

 application對象的生命周期:啟動Web服務(wù)器創(chuàng)建,關(guān)閉Web服務(wù)器銷毀。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩免费午夜福利视频| 熟女少妇一区二区三区蜜桃| 欧美一区日韩二区亚洲三区| 日本99精品在线观看| 日本不卡一区视频欧美| 少妇毛片一区二区三区| 国内尹人香蕉综合在线| 不卡在线播放一区二区三区| 丰满少妇被粗大猛烈进出视频| 一二区中文字幕在线观看| 神马午夜福利免费视频| 九九热最新视频免费观看| 美国女大兵激情豪放视频播放 | 国产麻豆视频一二三区| 精品综合欧美一区二区三区| 欧美日韩亚洲综合国产人| 欧美小黄片在线一级观看| 日本淫片一区二区三区| 国产亚洲视频香蕉一区| 操白丝女孩在线观看免费高清| 日本熟妇熟女久久综合| 99香蕉精品视频国产版| 国产av精品高清一区二区三区| 国产亚洲午夜高清国产拍精品| 风韵人妻丰满熟妇老熟女av| 欧美日韩亚洲精品内裤| 午夜福利网午夜福利网| 亚洲一二三四区免费视频| 欧美日韩视频中文字幕| 精品国产亚洲免费91| 欧美六区视频在线观看| 韩国激情野战视频在线播放| 国产爆操白丝美女在线观看| 日韩特级黄色大片在线观看| 亚洲男人天堂成人在线视频| 日本一区二区三区久久娇喘| 久久精品久久久精品久久| 日韩一区欧美二区国产| 国产亚州欧美一区二区| 正在播放国产又粗又长| 国产内射一级一片内射高清|