每個應用都會有一個ServletContext對象與之關聯,當容器分布在多個虛擬機上時,web應用在所分布的每個虛擬機上都擁有一個ServletContext實例。缺省情況下,ServletContext不是分布式的,并且只存在于一個虛擬機上。
ServletContext官方叫servlet上下文。服務器會為每一個工程創建一個對象,這個對象就是ServletContext對象。這個對象全局唯一,而且工程內部的所有servlet都共享這個對象。所以叫全局應用程序共享對象。
ServletContext:代表當前web應用(非常重要)
WEB容器在啟動時,它會為每個WEB應用程序都創建一個對應的ServletContext對象,它代表當前web應用。
ServletConfig對象中維護了ServletContext對象的引用,開發人員在編寫servlet時,可以通過ServletConfig.getServletContext方法獲得ServletContext對象由于一個WEB應用中的所有Servlet共享同一個ServletContext對象,因此Servlet對象之間可以通過ServletContext對象來實現通訊。
ServletContext對象通常也被稱之為context域對象。
ServletContext的應用:
context中常用的方法有:
void setAttribute(String,Object);
Object getAttribute(String);
void removeAttribute(String);
1.做為域對象可以在整個web應用范圍內共享數據。
域對象:在一個可以被看見的范圍內共享數據用到對象
作用范圍:整個web應用范圍內共享數據
生命周期:當服務器啟動web應用加載后創建出ServletContext對象后,域產生。當web應用被移除出容器或服務器關閉,隨著web應用
的銷毀域銷毀。
2、獲取WEB應用的初始化參數
我們在第一段中,通過<init-param>標簽為某一個單獨的servlet加配置信息,這種配置信息在其他的Servlet中是無法訪問到的??扇绻覀兪褂?lt;context-param>標簽(與Servlet標簽并列)為整個Web應用配置屬性的話,那所有的Servlet就都能訪問里面的參數了。例如:可以把數據庫的配置信息放在這里。
這里涉及到一些概念不要混淆:
請求參數 parameter --- 瀏覽器發送過來的請求中的參數信息初始化參數 initparameter --- 在web.xml中為Servlet或ServletContext配置的初始化時帶有的基本參數域屬性 attribute --- 四大作用域中存取的鍵值對
代碼舉例:
在web.xml中為整個web應用添加初始化參數:用戶名、密碼。代碼位置如下:
package com.vae.servlet; import java.io.IOException;import java.util.Enumeration; import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; public class ServletTest03 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext context = this.getServletContext(); // 得到上下文對象 // 獲取單個的Context里面的初始化參數 String value1 = context.getInitParameter("username"); String value2 = context.getInitParameter("password"); System.out.println(value1 + ";" + value2); System.out.println(); // 一次性獲取Context里所有的初始化參數 Enumeration enumeration = context.getInitParameterNames(); while (enumeration.hasMoreElements()) { String name = (String) enumeration.nextElement(); String value = context.getInitParameter(name); System.out.println(name + ";" + value); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
上面的代碼可以看到,我們可以通過context.getInitParameter()方法獲得初始化參數。
運行效果如下:
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
什么是經濟全球化?經濟全球化,英文名稱為Economic Globalization ,具體是指經濟在全球的環境下呈現出相互依存、相互競爭的狀態,經濟活動逐漸超越了國界從而形成了一個有機整體。在一定程度上來看,經濟全球化是一種不可阻擋的趨勢,在這個過程中,民族性和地方性都在逐漸減少,有利于資源以及生產資料在全球范圍之內的合理配置。經濟全球化的利與弊分別是什么?一、經濟全球化的利 :1、有益于世界各...
越來越多人選擇退出相互寶,原因其實離不開負面輿論的影響,如同多諾米骨牌,排山倒海式的輕松壓垮相互寶在很多人心中的形象。最開始罵當然是因為分攤金上漲了,相互寶就是從這個時候開始被扣上了“不靠譜”“割韭菜”等帽子。對于想要推出相互寶的朋友想要知道相互寶怎么才能退本金呢?相互寶退出流程1、登錄支付寶APP,點擊【我的】--【螞蟻保險】找到相互寶,進入相互寶...
黃金24k和999純金的區別在哪里?24K就是純金,通常將含金量達到99.96%以上的黃金稱之為24K金或者是純金, 24K金和999 黃金的區別是:1、含金量不同: 24K金為純金,含金量在99.96%以上,而999黃金是含金量達到99.9%的黃金;2、價格不同: 999黃金的價格要比24K金高;3、999黃金柔韌性和延展性比24K金更差,因為24K金在制造中加了其它金屬。周大生的黃金純不純?周...