freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于java的web服務(wù)器-資料下載頁(yè)

2025-08-24 02:49本頁(yè)面

【導(dǎo)讀】和Web的軟件和應(yīng)用系統(tǒng)無(wú)疑需要更為開放和靈活的體系結(jié)構(gòu)。用戶請(qǐng)求在多個(gè)服務(wù)器間進(jìn)行負(fù)載平衡。正是在這一背景下,本課題提出開發(fā)支持JAVA標(biāo)準(zhǔn)的Web應(yīng)用服務(wù)。器,為基于Java、XML和數(shù)據(jù)庫(kù)的Web應(yīng)用提供存儲(chǔ)、查詢、發(fā)布數(shù)據(jù)的能力,建立Web的愿望是通過(guò)易于使用的超文本接口,提供通過(guò)。完整的Web結(jié)構(gòu)應(yīng)包括:HTTP協(xié)議、Web服務(wù)器、通用網(wǎng)關(guān)接。息給Web服務(wù)器,再由Web服務(wù)器去啟動(dòng)所指定的程序來(lái)完成特定的工作。Web應(yīng)用程序接口就是一組函數(shù),可以幫助開發(fā)者借助服務(wù)器配置文件中。資源定位符)來(lái)獲取并顯示W(wǎng)eb網(wǎng)頁(yè)的一種軟件工具。這里從用戶的角度來(lái)描述Web頁(yè)面的交。收到第一個(gè)響應(yīng)IP包的時(shí)間稱為請(qǐng)求及響應(yīng)時(shí)間;圖2-2表示了獲取一個(gè)Web頁(yè)面的過(guò)程。組成部分,在Web系統(tǒng)的頁(yè)面交互的過(guò)程中也占有舉足輕重的作用。

  

【正文】 writeMainSection()。 void writeJspServiceEnd()。 void writePageEnd()。 } ServletWriter 根據(jù)生成的 XML Document 對(duì)象并結(jié)合 JSP 規(guī)范生成一個(gè)Servlet 源文件。 編譯 JSP 生成的 Servlet 只有編譯成 Java 類才能夠被 Servlet 容器所調(diào)用。我們使用優(yōu)秀的開源程序 ant 來(lái)完成生成的 Servlet 類的編譯。 JSP 引擎通過(guò)該 JSP 文件所在的應(yīng)用程序上下文獲取當(dāng)前的類裝載器,類裝載器為 ant 初始化編譯所需的類路徑,調(diào)用 ant 進(jìn)行編譯。如果編譯失敗, JSP 引擎直接向客戶端返回錯(cuò)誤信息,否則,使用類裝載器將編譯后的 Servlet 類裝載進(jìn)內(nèi)存并實(shí)例化,交給 Servlet 容器進(jìn)行處理。編譯器可供用戶選擇,當(dāng)前我們提供 javac 和 jikes 兩種編譯器來(lái)編譯 JSP。 JSP 的生命周期 一個(gè)將 JSP 文件編譯后的 Servlet 類包括 6 個(gè)主要的方法: init、 destroy、service、 jspInit、 jspDestroy、 _jspService。前三個(gè)方法繼承自 HttpServlet,后三個(gè)方法繼承自 HttpJspPage。后三個(gè)方法由 JSP 引擎在解析 JSP 文件的過(guò)程中自動(dòng)生成,并對(duì) Servlet 容器透明,它們是生成的 Servlet 類的核心。基本關(guān)系是 init調(diào)用 jspInit, destroy 調(diào)用 jspDestroy, service 調(diào)用 _jspService,因此 Servlet 容器通過(guò) init、 destroy、 service 即可完成對(duì)由 JSP 生成的 Servlet 的調(diào)用。 JSP 頁(yè)面第一次被請(qǐng)求時(shí), JSP 引擎按照前面所述三個(gè)步驟創(chuàng)建 JSP 頁(yè)面代表的 Servlet 實(shí)例, Servlet 容器調(diào)用該實(shí)例的 init 方法從而間接地調(diào)用 jspInit,jspInit 方法只被運(yùn)行一次, Servlet 容器保證在任何請(qǐng)求被處理前處理完 jspInit。與 jspInit類似, jspDestroy也只在 Servlet從 JVM卸載時(shí)由 Servlet容器通過(guò) destroy方法調(diào)用。 Servlet 容器調(diào)用 _jspService 方法處理請(qǐng)求并對(duì)客戶端做出回復(fù)。 JSP引擎只在第一次請(qǐng)求某 JSP 頁(yè)面時(shí)創(chuàng)建一個(gè) Servlet,以后的請(qǐng)求只是重用第一個(gè)請(qǐng)求所創(chuàng)建的 Servlet。 Servlet 容器 Servlet 容器是 DM WAS 的核心部分,它基于 HTTP 協(xié)議并提供請(qǐng)求和響應(yīng)等網(wǎng)絡(luò)服務(wù)。 Servlet 容器主要通過(guò) Servlet 的生命周期來(lái)管理 Servlet,包括初始化、執(zhí)行和銷毀 Servlet。 請(qǐng)求和響應(yīng) 客戶端和服務(wù)器之間的交互過(guò)程實(shí)質(zhì)上就是一個(gè)請(qǐng)求和響應(yīng)的過(guò)程。 Servlet容器封裝了這一過(guò)程的細(xì)節(jié),以一個(gè) DMRequest 對(duì)象代表客戶端的一個(gè)請(qǐng)求,以一個(gè) DMResponse 對(duì)象代表對(duì)客戶端的一個(gè)響應(yīng)。 DMRequest 和 DMResponse分別實(shí)現(xiàn)了 HttpServletRequest 和 HttpServletResponse 接口。 DMRequest 封裝了 Socket 的輸入流,負(fù)責(zé)讀取并存儲(chǔ) HTTP 請(qǐng)求頭和消息體,同時(shí)提供標(biāo)準(zhǔn)接口供應(yīng)用程序訪問和修改這些頭信息。 DMResponse 封裝 了 Socket 的輸出流,它通過(guò)向 HTTP 響應(yīng)頭和消息體中寫入被請(qǐng)求的內(nèi)容而對(duì)客戶端做出響應(yīng)。 DMResponse 內(nèi)部維持一個(gè)字節(jié)緩沖區(qū),用于緩存輸出的內(nèi)容。一旦緩沖區(qū)已滿,容器就將緩沖區(qū)中的內(nèi)容發(fā)送到客戶端,并將緩沖區(qū)清空。 DMResponse 默認(rèn)的緩沖區(qū)大小為 1024 字節(jié),應(yīng)用程序可根據(jù)需要進(jìn)行調(diào)整,但必須調(diào)整適當(dāng)。緩沖區(qū)大,則向客戶端做出響應(yīng)的間隔時(shí)間長(zhǎng),減少服務(wù)器的負(fù)擔(dān);緩沖區(qū)小,則客戶端獲得響應(yīng)的速度快,但增加了服務(wù)器內(nèi)存的消耗。應(yīng)用程序也可以通過(guò) flushBuffer 方法強(qiáng)制服務(wù)器將緩沖區(qū)中的內(nèi)容 輸出到客戶端。 與 DMRequest 類似, DMResponse 也提供一些標(biāo)準(zhǔn)接口供應(yīng)用程序在響應(yīng)完成前對(duì) HTTP 頭信息進(jìn)行訪問和修改,以滿足應(yīng)用程序定制響應(yīng)的需求。 DMRequest 和 DMResponse 對(duì)象是服務(wù)器通過(guò)被請(qǐng)求的 Servlet 的 service 方法暴漏給應(yīng)用程序的。它們的生命周期只存在于此次 service 方法的執(zhí)行過(guò)程中。 應(yīng)用程序上下文 每一個(gè)應(yīng)用程序隸屬于一個(gè)應(yīng)用程序上下文, Servlet 容器按照應(yīng)用程序上下文對(duì)應(yīng)用程序進(jìn)行管理。 DM Servlet 容器遵從 Servlet 的生命 周期規(guī)律來(lái)實(shí)現(xiàn)。Servlet 的生命周期由 DMServletContext 來(lái)管理。一個(gè) DMServletContext 實(shí)例代表一個(gè)應(yīng)用程序上下文,在服務(wù)器中部署了多少應(yīng)用程序,則容器中就存在多少DMServletContext 實(shí)例。 DMServletContext 實(shí)例化是在服務(wù)器啟動(dòng)時(shí)由上下文管理器 (ContextManager)來(lái)實(shí)現(xiàn)的。上下文管理器在服務(wù)器啟動(dòng)時(shí)負(fù)責(zé)裝載所有部署在服務(wù)器中的應(yīng)用程序。它實(shí)例化所有上下文,以及啟動(dòng)特定于每個(gè)上下文的服務(wù),如創(chuàng)建上下文的 Web 類裝載器、調(diào)用 XML 組件解析 Web 描述符、創(chuàng)建上下文的安全域、綁定對(duì)應(yīng)于該上下文的命名服務(wù)。當(dāng)一個(gè)應(yīng)用程序上下文實(shí)例化且相關(guān)服務(wù)啟動(dòng)后,它就可以服務(wù)于對(duì)部署在其中的 Servlet 的請(qǐng)求。 按照 Servlet 規(guī)范,一個(gè) Servlet 具有一定的生命周期,這個(gè)生命周期由 接口的 init, service 和 destroy 方法表達(dá)。 Servlet 只需被服務(wù)器加載一次并且常駐內(nèi)存。 DM Servlet 容器按照 Servlet 的生命周期來(lái)管理容器中的 Servlet。 容器維持一個(gè) Servlet 緩沖池。當(dāng)客戶端向服務(wù)器請(qǐng) 求某個(gè) Servlet 服務(wù)時(shí),容器首先在 Servlet 緩沖池中查找是否有所請(qǐng)求的 Servlet 實(shí)例,如果有,直接取出并調(diào)用該 Servlet 的 service 方法服務(wù)于客戶端;如果沒有,表明該 Servlet 是被第一次請(qǐng)求,容器調(diào)用當(dāng)前上下文的 Web 類裝載器將請(qǐng)求的 Servlet 類裝載進(jìn)內(nèi)存并實(shí)例化。 Servlet 加載并實(shí)例化后,容器對(duì)該 Servlet 進(jìn)行初始化。初始化的過(guò)程主要是讀取 Servlet 的配置信息、系統(tǒng)資源(例如 JDBC 連接)以及其它僅僅需要執(zhí)行一次的任務(wù)。通過(guò)調(diào)用它的 init 方法并給它傳遞唯一的一個(gè)DMServletConfig對(duì)象完成這個(gè)過(guò)程。 DMServletConfig實(shí)現(xiàn)了 ServletConfig接口,它封裝了 Servlet 的一些初始化參數(shù)。 DMServletConfig 對(duì)象同時(shí)給 Servlet 提供了訪問實(shí)現(xiàn)了 ServletContext 接口的 DMServletContext 對(duì)象的方法,從而使得該Servlet 能夠訪問 ServletContext 定義的一切公共接口。 init 方法在 Servlet 生命周期過(guò)程中僅被調(diào)用一次。在初始化期間, Servlet 實(shí)例可能通過(guò)拋出UnavailableException 或者 ServletException 異常表明它不能進(jìn)行有效服務(wù)。如果一個(gè) Servlet 拋出一個(gè)這樣的異常,它將不會(huì)被置入有效服務(wù)并且容器立即將其釋放并向客戶端返回錯(cuò)誤。如果 Servlet 初始化正常,容器將該 Servlet 放入緩沖池,同時(shí)將 DMRequest 和 DMResponse 對(duì)象傳給 Servlet 的 service 方法并執(zhí)行。同樣,如果在執(zhí)行過(guò)程中發(fā)生異常,容器直接向客戶端返回錯(cuò)誤。 在 Servlet 的執(zhí)行過(guò)程中,需要注意一個(gè)多線程和持久性的問題。因?yàn)?Servlet只被創(chuàng)建一次,然后作為不變的實(shí)例 一直運(yùn)行,所以在 Servlet 中可以創(chuàng)建持久的變量和對(duì)象。同一 Servlet 的所有線程共享這些持久的變量和對(duì)象。這樣就會(huì)帶來(lái)一個(gè)問題 — 線程競(jìng)賽。發(fā)生線程競(jìng)賽的情況是:一個(gè)線程正準(zhǔn)備私用數(shù)據(jù),而第二個(gè)線程在第一個(gè)線程使用完數(shù)據(jù)前修改了此數(shù)據(jù)。 Servlet API 提供了 SingleThreadModel 接口解決了這個(gè)問題。開發(fā)者如果想防止線程競(jìng)賽問題,他可以將其編寫的 Servlet 實(shí)現(xiàn) SingleThreadModel 接口。容器保證在調(diào)用實(shí)現(xiàn)了 SingleThreadModel 接口的 Servlet 的 service 方法時(shí)只會(huì)讓一個(gè)線程執(zhí)行并且一次性執(zhí)行完,其它相同請(qǐng)求的線程只能等待。 Servlet 規(guī)范沒有規(guī)定容器要將一個(gè)加載的 Servlet 保存多長(zhǎng)時(shí)間,顯然將一個(gè)初始化的 Servlet 永久保存在緩沖池中是不可取的。 DM Servlet 容器會(huì)按照最近最少使用算法 (Least Recently Used,LRU)定期清理 Servlet 緩沖池中的 Servlet,對(duì)于很久未使用的 Servlet,容器調(diào)用它的 destroy 方法并將其移除以便它能夠被垃圾回收。 Servlet 緩沖池 LRUCache 按如下算法實(shí)現(xiàn)。 一個(gè)緩沖對(duì)象 CacheObject 對(duì) Servlet 實(shí)例進(jìn)行包裝, CacheObject 由兩 個(gè)變量組成,一個(gè)是代表 Servlet 實(shí)例的對(duì)象變量,一個(gè)是代表每次訪問該Servlet 實(shí)例的時(shí)間變量。 的主要方法是 put 方法和 get 方法,其內(nèi)部用一個(gè)哈希表和一個(gè)有向鏈表實(shí)現(xiàn)緩沖,用一個(gè)后臺(tái)守護(hù)線程定期清理最近很久未使用的 Servlet 對(duì)象。 哈希表存儲(chǔ) Servlet 實(shí)例的類名和將該 Servlet 實(shí)例進(jìn)行包裝的 CacheObject的名 — 值對(duì),有向鏈表存儲(chǔ) Servlet 實(shí)例的類名。具體實(shí)現(xiàn)見算法 、算法 以及算法 。 Servlet 過(guò)濾器 規(guī)范增加了一個(gè)很重要的新功能 — Servlet 過(guò)濾器( Servlet Filter),其主要作用是在客戶端請(qǐng)求到達(dá)被請(qǐng)求的服務(wù)之前,或者服務(wù)響應(yīng)離開服務(wù)器到達(dá)客戶端之前,根據(jù)需要對(duì)請(qǐng)求或響應(yīng)進(jìn)行預(yù)處理。 與 Servlet 一樣,一個(gè) Filter 也有三個(gè)方法表示它的生命周期: init、 doFilter和 destroy。容器處理 Filter 的生命周期與處理 Servlet 類似,這里不再重述。 容器實(shí)現(xiàn)過(guò)濾器的 機(jī)制關(guān)鍵是要處理好過(guò)濾鏈( FilerChain)。 DMFilerChain實(shí)現(xiàn)了 FilerChain 接口,用以表示一個(gè)或多個(gè) Filter 的集合。 DMFilerChain 內(nèi)部采用一個(gè)隊(duì)列用來(lái)存儲(chǔ)所有該過(guò)濾鏈上的所有過(guò)濾器。過(guò)濾鏈上的過(guò)濾器執(zhí)行時(shí)具有先后順序,它們按照擊鼓傳花的方式逐個(gè)執(zhí)行。 DM Servlet 容器按照如下方法處理過(guò)濾器:當(dāng)容器接收到一個(gè)請(qǐng)求時(shí),它獲取請(qǐng)求的 requestURL,找出所有在 Web 描述符中定義的與該 requestURL 匹配的Filter,按照 Web 描述符中配置的 Filter 映射的 先后循序逐個(gè)將這些 Filter 加到DMFilerChain 過(guò)濾鏈上。 DMFilerChain 對(duì)象通過(guò) Filter 的 doFilter 方法傳給該過(guò)濾鏈上的每個(gè) Filter。過(guò)濾鏈提供 doFilter 方法用以激活過(guò)濾鏈上下一個(gè) Filter。 是否調(diào)用過(guò)濾鏈的 doFilter 方法完全由應(yīng)用程序決定,容器只保證在請(qǐng)求到達(dá)時(shí)激活過(guò)濾鏈上的第一個(gè) Filter。如果過(guò)濾器在過(guò)濾鏈的尾部,沒有后繼過(guò)濾器,容器將處理客戶端所請(qǐng)求的服務(wù)。 全文總結(jié) JAVA 是 Sun 公司提出的一種新的多層分布式計(jì)算體系結(jié)構(gòu)的技術(shù) 框架,是一整套技術(shù)的總稱,包括建立企業(yè)應(yīng)用系統(tǒng)的各個(gè)方面。 Java 語(yǔ)言的服務(wù)器端應(yīng)用的框架,支持平臺(tái)獨(dú)立、可移植、多用戶、安全和標(biāo)準(zhǔn)的企業(yè)級(jí)應(yīng)用。使用JAVA 技術(shù)能夠快速建立可伸縮性的企業(yè)應(yīng)用系統(tǒng)。目前市場(chǎng)上出現(xiàn)了很多成熟的應(yīng)用服務(wù)器產(chǎn)品,多數(shù)數(shù)據(jù)庫(kù)廠商也針對(duì)自己的數(shù)據(jù)庫(kù)系統(tǒng)推出了應(yīng)用服務(wù)器中間件,以便為企業(yè)應(yīng)用提供整體解決方案。本課題就是在這一背景下提出的。 DM WAS 實(shí)現(xiàn)了三層體系結(jié)構(gòu)中的應(yīng)用邏輯層,以 DM 關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)為數(shù)據(jù)管理層、標(biāo)準(zhǔn) Web 瀏覽器為應(yīng)用表現(xiàn)層,構(gòu)成了完整的基于 Web 的三層結(jié)構(gòu)的應(yīng)用 系統(tǒng)平臺(tái)。 本課題在研究 HTTP 協(xié)議和 JAVA 規(guī)范白皮書的基礎(chǔ)上,開發(fā)出一種基于JAVA 的 DM WAS,本文的研究工作主要體現(xiàn)在下面幾個(gè)方面: JAVA 規(guī)范的 Web 應(yīng)用服務(wù)器,它能夠處理靜態(tài)資源、動(dòng)態(tài) JSP 頁(yè)面、 Servlet 等大部分服務(wù)器端 Web 資源,任何符合 JAVA 規(guī)范的 Web應(yīng)用程序都能夠在 DM WAS 中配置運(yùn)行; ,以支持熱部署和控制 Web 應(yīng)用程序?qū)︻惡唾Y源文件的訪問權(quán)限; ,設(shè)計(jì)并實(shí)現(xiàn)了線程池,并對(duì)運(yùn)行過(guò)程中 可能出現(xiàn)的資源不足、內(nèi)存泄露等問題給出了解決方法; 擴(kuò)展標(biāo)準(zhǔn),在服務(wù)器中實(shí)現(xiàn)了數(shù)據(jù)庫(kù)連接緩沖池技術(shù),對(duì)物理連接和邏輯連接進(jìn)行兩級(jí)緩存,提高數(shù)據(jù)庫(kù)物理連接的利用率,改善連接請(qǐng)求的響應(yīng)性能; ,實(shí)現(xiàn)了基于 HTTP 基本驗(yàn)證和基于表單的身份認(rèn)證以及基于角色的訪
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1