【正文】
y ( ) 方法 , 將其從內(nèi)存中刪除。 3 如何調(diào)用 Servlet 調(diào)用 Ser vlet 的方法共有五種 : 在 URL 中調(diào)用、在窗體〈 Form〉標(biāo)記中調(diào)用、在 HT ML 頁面中調(diào)用、在 JSP 文件中調(diào)用、在 ASP 文件中調(diào)用。下面將逐項(xiàng)加以介紹。 ( 1) 在 URL 中調(diào)用 Serv let。 只需在瀏覽器中輸入格式像 : ∥ yo ur webser vername / serv let path/ ser vlet name 一樣的 Serv let URL 地址即可。其中 : yo ur webser ver name 是指 Serv let 所在的 Web 服務(wù)器名 , serv let pat h 是指 Serv let 的路徑 , ser vlet name 是指 Serv let 的真實(shí)名字或別名。 ( 2) 在〈 FORM〉標(biāo)記中調(diào)用 Serv let 。 在〈 FORM 〉標(biāo)記中調(diào)用 Serv let 使用戶能在 Web 頁面上輸入資料 , 并將輸入資料提交給 Ser vlet。 Serv let 將根據(jù)提交的方法不同 , 采用不同的方式接收資料。例如 : FORM METHOD = “ POST / GET ” ACTION = “ / ser vlet pat h/ serv let name” { 放置文本輸入?yún)^(qū)域標(biāo)記、按鈕和其它標(biāo)識 }〈 / FORM〉 ( 3) 在 HTM L 頁面中調(diào)用 Serv let。使用〈 SERVLET〉標(biāo)記與使用〈 FORM〉標(biāo)記一樣 , 無需創(chuàng)建一個完整的 HTML 頁面。作為替代 , Ser vlet 的輸出僅是HTML 頁面的一部分 ( HTML 片段 ) , 且被動態(tài)嵌入到原來 HT ML 頁面中的其它靜態(tài)文本中。所有這些都發(fā)生在服務(wù)器上 , 且發(fā)送給用戶的僅是結(jié)果 HT ML 頁面。 原始 HTM L 頁面中包含〈 S ERVLET 〉和〈 / SERVLET 〉 標(biāo)記。 Serv let 將在這兩個標(biāo)記中被調(diào)用 , 且 Ser vlet 的響應(yīng)將覆蓋這兩個標(biāo)記間的所有東西和標(biāo)記本身。例如 :〈 SERVLET NAME= “ my serv let ” CODE= “ my serv let .class” CODEBASE= “ u r l” initpar am= “ v alue”〉〈 PARAM NAME= “ parm1” VALU E= “ v alue1”〉〈 PARAM NAME= “ parm2” VALU E= “ v alue2”〉 ?? 〈 / SERVLET 〉 ( 4) 在 JSP 文件中調(diào)用 Serv let 。 在 JSP 文件中調(diào)用 Ser vlet 所采用的格式與 HTM L 頁 1面中調(diào)用完全一樣。而且原理也完全相同。只不過調(diào)和它的是動態(tài)的 JSP 文件不是靜態(tài)的 HTML 頁面而已。( 5) 在 ASP 文件中調(diào)用 Ser vlet。如果您在 Micr oso ft I nt er Informatio n Ser ver ( Ⅱ S)上有遺留的 ASP 文件 , 并且無法將 ASP 文件移植成 JSP 文件時 , 您可用 ASP 文件來調(diào)用 Ser vlet。但必須通過一個特殊的 Activ eX 控制 , ASP 文件只有通過它才能調(diào)用 Serv let 。 4 Servlet 如何利用連接管理器高效地管理數(shù)據(jù)庫連接 ( 1) 連接管理器的功能。 相對于非 Web 應(yīng)用程序 , 基于 Web 的應(yīng)用程序?qū)?shù)據(jù)庫的訪問會導(dǎo)致更高的和不可預(yù)料的系統(tǒng)開銷 , 這是由于 Web 用戶更為頻繁的連接和斷開。通常連接與斷開數(shù)據(jù)庫連接所用的資源 將遠(yuǎn)遠(yuǎn)超過檢索時所用的資源。連接管理器的功能就是盡可能地減少用戶對數(shù)據(jù)庫資源的額外占用 , 實(shí)現(xiàn)數(shù)據(jù)庫訪問的最佳效能。 連接管理器通過建立用戶 Ser vlet 可用的連接緩沖池將連接的系統(tǒng)開銷分?jǐn)偨o多個用戶請求。換言之 , 每個用戶請求僅占用連接 / 斷開連接所用系統(tǒng)開銷成本的一小部分。在使用初始資源建立緩沖池中的連接后 , 其余連接 / 斷開連接 所用的系統(tǒng)開銷就不大了 , 因?yàn)檫@只是重復(fù)使用已有的連接而已。 Serv let 以如下方式使用連接緩沖池 : 當(dāng)一個用戶通過 Web 向 Serv let 請求時 , Serv let 從緩沖池使用一個已有的連接 , 這意味著用戶請求不會引起數(shù)據(jù)庫的連接系統(tǒng)開銷。在 Serv let 終止之后 , 它將連接返回至連接管理器緩沖池供其它 Ser vlet 使用。因而用戶請求不會引起數(shù)據(jù)庫的斷開連接的系統(tǒng)開銷。連接管理器還使用戶能夠控制到數(shù)據(jù)庫產(chǎn)品的并發(fā)連接數(shù)。當(dāng)數(shù)據(jù)庫的許可證協(xié)議限定用戶數(shù)量時 , 這一特性是非常有用的??梢詾閿?shù)據(jù)庫創(chuàng)建一個緩沖池 , 并將連接管理器緩沖池的“最多連接數(shù)”參數(shù)設(shè)成數(shù)據(jù)庫產(chǎn)品許可證中限定的最大用戶數(shù)。如果用其它程序而不用連接管理器連接數(shù)據(jù)庫 , 則不能保證該方法有效。 ( 2) 連接管理器的結(jié)構(gòu)。 連接管理器維護(hù)一個連接到特定數(shù)據(jù)庫且處于打開狀態(tài)的連接緩沖池。緩沖池中尋找可使用的連接的 serv let 之間的典型交互作用。 第一步 : 當(dāng)?shù)谝粋€ Serv let 試圖與連接管理器通信時 , 由 Java 應(yīng)用服務(wù)器裝入連接管理器。只要 Java 應(yīng)用服務(wù)器在運(yùn)行 , 連接管理器就一直被裝入。第二步 : Java 應(yīng)用服務(wù)器將用戶請求傳遞給一個 Ser vlet。第三步 : Ser vlet 用連接管理器使用的方法從緩沖池中請求一個連接。第四步 : 緩沖池給 Ser vlet 分配一個池中已有的空 閑連接。 第五步 : Ser vlet 使用連接與數(shù)據(jù)庫直接對話 , 這一過程中使用的是特定數(shù)據(jù)庫的標(biāo)準(zhǔn) API 。第六步 : 數(shù)據(jù)庫通過與 Ser vlet 的連接返回資料。第七步 : 當(dāng)Ser vlet 結(jié)束與數(shù)據(jù)庫通信時 , Serv let 把連接歸還給連接管理器緩沖池 , 以 供其它 Ser vlet 使用。第八步 : Ser vlet 通過 Jav a 應(yīng)用服務(wù)器向用戶發(fā)回響應(yīng)。當(dāng) Serv let 請求一個連接時 , 如果緩沖池中沒有空閑的連接 , 那么連接管理器直接與數(shù)據(jù)庫通信。連接管理器將 :第九步 : 向數(shù)據(jù)庫請求一個新 的連接。第十步 : 將連接添加到緩沖池中。如果緩沖池中的連接數(shù)達(dá)到了規(guī)定的上限 , 連接服務(wù)器將不會把新的連接加入緩沖池中。 ( 3) 連接管理器的性能特性。為緩沖池創(chuàng)建一個新的連接是一項(xiàng)系統(tǒng)開銷很高的任務(wù) , 新的連接將使用數(shù)據(jù)庫上的資源。因此連接管理器盡量用緩沖池中的現(xiàn)有連接來滿足 Serv let 的請求。同時 , 連接管理器必須盡可能地最小化緩沖池中的空閑連接 , 因?yàn)檫@是對系統(tǒng)資源的極大浪費(fèi)。連接管理器與 Serv let 一同執(zhí)行這些最小化和最大化任務(wù)。連接管理器維護(hù)每個連接的驗(yàn)證時間標(biāo)記、最近使用時間標(biāo)記和正 在使用標(biāo)志。當(dāng)某個 Ser vlet 第一次獲得連接時 ,連接的驗(yàn)證時間標(biāo)記和最近使用時間標(biāo)記被設(shè)置為當(dāng)前時間 , 連接的正在使用標(biāo)志則被設(shè)置為真。連接管理器可以從某個Serv let 中移走一個長時間未使用的連接 , 這個時間長度是由連接管理器的“最長周期”參數(shù)指定的。連接管理器可以查看正在使用連接的最近使用時間標(biāo)記。如果最近使用時間和當(dāng)前時間之間的時間差大于“最長周期”配置參數(shù) , 則本連接將被認(rèn)為是一個殘留連接 , 這就 表明占有它的 Serv let 已終止或者沒有響應(yīng)。殘留連接將被歸還給緩沖池以供其它 Ser vlet 使用 , 它的正在使用標(biāo)志被設(shè)置為假 , 且驗(yàn)證和最近使用時間標(biāo)記被設(shè)置為當(dāng)前時間。如果 Ser vlet 準(zhǔn)備在較長一段時期內(nèi)使用連接與數(shù)據(jù)庫多次 通信 , 您必須將代碼加入 Serv let 中 , 以便在每次使用連接之前 , 確認(rèn)它仍占有這個連接。連接管理器可以從緩沖池中除去空閑的連接 , 因?yàn)樗鼈儠速M(fèi)資源。為了確定哪個連接是空閑的 , 連接管理器將檢查連接標(biāo)志和時間標(biāo)記 , 這個操作是通過周期性地獲取連接緩沖池信息來實(shí)現(xiàn)的。連接管理器檢查未被任何Ser vlet 使用的連接 ( 這些連接的正在使用標(biāo)志為假 ) 。 如果最近使用時間與當(dāng)前時間的時間差超過了“最長空閑時間”配置參數(shù) , 將認(rèn)為本連接是空閑的??臻e連接將被從緩沖池中除去 , 降至“最少連接數(shù)”配置參數(shù)指定的較低限定值。 中英文資料翻譯