Web層Web層設計中的問題與Web應用程序部署客戶端課件_第1頁
Web層Web層設計中的問題與Web應用程序部署客戶端課件_第2頁
Web層Web層設計中的問題與Web應用程序部署客戶端課件_第3頁
Web層Web層設計中的問題與Web應用程序部署客戶端課件_第4頁
Web層Web層設計中的問題與Web應用程序部署客戶端課件_第5頁
已閱讀5頁,還剩155頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Web層Web層設計中的問題與指南Web應用程序部署客戶端5.顯示層技術1Web層5.顯示層技術15.1Web層Web層的工作就是接收來自于HTTP客戶端的輸入,將收到的輸入交給內部的業務邏輯進行處理,然后將結果通過HTTP協議送回客戶端。5.顯示層技術-Web層在基于Interent的分布式應用框架中,顯示層一般由Web層和客戶端兩部分組成。25.1Web層Web層的工作就是接收來自于HTTP客戶端的JSP文件:從HTTP的請求中提取參數,調用相應的業務邏輯,處理HTTP會話,最后生成HTTP文檔??偟目磥?,這個模型的好處是簡單,但是它把業務邏輯和表現混在一塊,對大應用來說,這個缺點是令人容忍不了的。兩種模型瀏覽器數據庫BeanJSP文件5.顯示層技術-Web層3JSP文件:從HTTP的請求中提取參數,調用相應的業務邏輯,MVC模式(Model/View/Controller)

5.顯示層技術-Web層定義:MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。視圖:用戶看到并與之交互的界面。對老式的Web應用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,還包括MacromediaFlash和象XHTML,XML/XSL,WML等一些標識語言和Webservices。4MVC模式(Model/View/Controller)5模型:表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。被模型返回的數據是中立的,即模型與數據格式無關。5.顯示層技術-Web層控制器:接受用戶的輸入,根據請求決定調用模型構件去處理請求,然后確定用哪個視圖來顯示模型處理返回的數據。5模型:表示企業數據和業務規則。在MVC的三個部件中,模型擁有66為什么要使用MVC5.顯示層技術-Web層多個視圖能共享一個模型。由于MVC已經將數據和業務規則從表示層分開,無論用戶想要Flash界面或是WAP界面,用一個模型就能處理它們,可以最大化的重用代碼。模型返回的數據沒有進行格式化,所以同樣的構件能被不同界面使用。7為什么要使用MVC5.顯示層技術-Web層多個視圖能共享一5.顯示層技術-Web層由于運用MVC的應用程序的三個部件是相互對立,改變其中一個不會影響其它兩個,所以依據這種設計思想能構造良好的松偶合的構件。可以使用控制器來聯接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構造應用程序提供強有力的手段。85.顯示層技術-Web層由于運用MVC的應用程序的三個部件是MVC的缺點使用MVC需要精心的計劃,花費相當可觀的時間去考慮如何將MVC運用到應用程序,同時由于模型和視圖要嚴格的分離,這樣也給調試應用程序到來了一定的困難。所以使用MVC同時也意味著要管理比以前更多的文件,增加了工作量。5.顯示層技術-Web層9MVC的缺點5.顯示層技術-Web層95.顯示層技術-Web層MVC設計模式是一個很好創建軟件的途徑,但是如果要隔離模型、視圖和控制器的構件,則要重新思考應用程序,尤其是應用程序的構架。MVC并不適合小型甚至中等規模的應用程序,花費大量時間將MVC應用到規模并不是很大的應用程序通常會得不償失。105.顯示層技術-Web層MVC設計模式是一個很好創建軟件交付應用的功能到Web之上:應用設計通常將業務邏輯從數據顯示中分離出來。Web層為后端應用模型中的業務邏輯(可以被其它類型的客戶端共享訪問),接收HTTP輸入并產生HTTP輸出。Web層的功能5.顯示層技術-Web層11交付應用的功能到Web之上:應用設計通常將業務邏輯從數據顯示動態內容創建:Web層組件為產生動態Web內容來設計的。Servlets和JSP頁面可以基于用戶的輸入與上下文將來自于多種源的數據格式轉化為任意的數據格式。屏幕流程:由于屏幕流程往往對應到特定的客戶端的動作,因此決定下一屏幕(也即哪個頁面)應該顯示什么的邏輯一般駐留在Web層。5.顯示層技術-Web層12動態內容創建:Web層組件為產生動態Web內容來設計的。Se數據表示和輸入收集:Web層和Web客戶端進行通訊以使得格式化代碼的Web文檔自然就屬于Web層。其次,用戶的輸入以HTTP的PUT和GET動作到達Web層,Web層收到這些動作即將其翻譯為某種形式(經常是某種形式的命令對象)以便其余的應用可以理解。5.顯示層技術-Web層13數據表示和輸入收集:Web層和Web客戶端進行通訊以使得格式狀態管理:Web層有一個簡單的、靈活的機制用來在一個用戶的會話期間積聚相應的事務型數據和上下文數據。協議轉換:EJB服務器、數據庫、EIS層資源管理器和其它的網絡資源都有它們自己的協議。Web層作為一個軟件層,把來自于其它協議的請求和應答翻譯為HTTP形式,或者,把HTTP請求和應答翻譯成其它協議的形式。5.顯示層技術-Web層14狀態管理:Web層有一個簡單的、靈活的機制用來在一個用戶的會對多種潛在的客戶端類型的支持:Web使用HTTP協議來傳送數據給客戶端,數據通過MIME類型(一種擴展的內容分類機制)來描述。任何HTTP形式的客戶端都能夠加入一個Web應用,且此客戶端能夠使用可以下載內容的任意類型,即使內容的類型還未存在。5.顯示層技術-Web層15對多種潛在的客戶端類型的支持:Web使用HTTP協議來傳送數J2EE的Web層技術提供了服務器的擴展機制,該機制提供了一種基于服務器端腳本設計所帶來的好處,并且采用的是一種標準的、安全的、廠商中立的方法。Web應用及支持它的Web層技術包括Web檔案(archive)、Web層組件模型、servlets,JSP及J2EE的Web容器。Web層技術5.顯示層技術-Web層16J2EE的Web層技術提供了服務器的擴展機制,該機制提供了一Web檔案:對一個Web應用的打包和部署之單元稱之為一個Web檔案(Webarchive,以“.war”作為文件名的結尾),此文件包含當前Web應用的所有類文件與資源,Web檔案也包含一個配置該應用的部署描述器文件。5.顯示層技術-Web層17Web檔案:對一個Web應用的打包和部署之單元稱之為一個WeWeb容器:一個容器是位于服務器里面的類之集合,它們相互合作以管理組件實例的生命周期并對那些實例提供數據和服務。J2EE規范定義了一個在Web容器與每一Web組件之間的約定/契約,用以定義組件的生命周期、組件必須實現的行為、以及服務器必須提供給該組件的服務。5.顯示層技術-Web層18Web容器:一個容器是位于服務器里面的類之集合,它們相互合作Web容器的作用:分發服務請求:容器分發服務請求給它所包含的組件,將上下文數據(如會話數據與當前請求的信息)提供給組件,并且協調該組件響應內容的產生。HTTP請求的應答:對于URL的HTTP請求翻譯成對組件實例的調用,并將基于組件所產生的內容生成相應的HTTP應答。5.顯示層技術-Web層19Web容器的作用:分發服務請求:容器分發服務請求給它所包含的組件生命周期的管理:Web容器通過回叫(callback)的方式來通知組件的狀態變化如實例初始化和消亡,實現對其組件的生命周期管理。5.顯示層技術-Web層20組件生命周期的管理:Web容器通過回叫(callback)的Servlet是一種Java平臺服務器端擴展組件,它運行在一個Web容器的里面。在一個Web應用中,每一Servlet的類都被映射成Web服務器中的一個或多個URL地址。當服務器接收到對某個servlet的URL的一個HTTP請求(GET,POST等)的時候,服務器調用相應的servlet的服務方法(service()),該方法產生此應答的動態內容。

Servlet5.顯示層技術-Web層21Servlet是一種Java平臺服務器端擴展組件,它運行在一Servlets特點Servlets采用Java來書寫,因此能夠運行在一個內嵌在WebServer里面的JVM實例之上。Servlets通常比CGI程序或腳本要快,因為它們運行的形式是編譯過的字節碼,取代的是一個笨重的進程或一個解釋腳本。5.顯示層技術-Web層22Servlets特點Servlets采用Java來書寫,因此Servlets比擴展庫要安全,因為JVM實例通常可以恢復一個非正常退出的servlet。與服務器端腳本技術相比,servlets的移植性更好,并且它所提供的是一個更為豐富的標準服務的集合。5.顯示層技術-Web層23Servlets比擴展庫要安全,因為JVM實例通常可以恢復一由于Java平臺所固有的運行時的可移植性,編譯過的servlet類具備二進制形式的跨硬件平臺的移植性;servlet與其容器之間的契約由JavaServlet規范予以定義并且由J2EE兼容測試包檢驗過(在一個J2EE品牌的產品里),因此servlets也可以跨Web服務器兼容。5.顯示層技術-Web層24由于Java平臺所固有的運行時的可移植性,編譯過的servlServlet開發人員可以創建能在所有J2EE品牌服務器上正確運行的產品,J2EE服務器用戶可以更換技術廠商而只做很小的甚至根本就不需要更改它們的應用代碼。打包和部署servlets(及其它的Web層組件和資源)的規范化和標準化,確保了一個Web應用不用作任何代碼修改或重建,就可以作為一個單獨的單元部署到任何J2EE品牌的服務器里面。5.顯示層技術-Web層25Servlet開發人員可以創建能在所有J2EE品牌服務器上正Servlet存在的問題Servlets寫起來比較冗長:很多產生HTML的servlets比起Web頁面要長一些,它帶有以System.out.println()環繞的每一行、在每一個雙引號之前都有反斜線符號、并且可能一塊邏輯或這里和那里的重述。這樣的servlets寫起來比較煩悶,而且讀和維護都是比較困難的。5.顯示層技術-Web層26Servlet存在的問題Servlets寫起來比較冗長:很Servlets是程序:對于所有的哪怕是最簡單的情況,servlets都需要編程人員來開發和維護。程序員不必熟悉圖形設計,圖形設計人員經常不是程序員。聯合編程邏輯和先進的可視化設計的servlets對于程序員和圖形設計人員來講,更改起來都是比較困難的。5.顯示層技術-Web層27Servlets是程序:對于所有的哪怕是最簡單的情況,seServlet代碼不易重用:基于HTML的Web應用通常包括大量的重復,很多使用的場合多次放在一個Web應用中,HTML頁面經常包含重復的樣式元素來提供一致的外觀和感覺。但是servlet的API提供很少對于重用業務或顯示邏輯的直接支持,結果通常是剪切與粘貼式的編碼風格犧牲了一致性與可維護性。5.顯示層技術-Web層28Servlet代碼不易重用:基于HTML的Web應用通常包Servlets混合功能代碼和顯示代碼在一起:這種做法限制看起來很小,實際上它往往是所有其它問題的根源。基本的問題是業務邏輯和數據表示基本上是不同的層面,將這兩者混合在一種單一的技術(既servlet)導致的是混淆設計、實現和維護。5.顯示層技術-Web層29Servlets混合功能代碼和顯示代碼在一起:這種做法限制Servlet的建議使用servlets實現服務:除了產生二進制內容以外,servlets一般提供無可視化的功能。一個servlet可以執行它所提供的服務—模板化、安全、個性化、MVC控制—然后選擇一個顯示組件并轉交請求給該組件去顯示。5.顯示層技術-Web層使用servlets作為控制器:一個Web層控制器,用來決定如何處理一個請求并選擇下一個要顯示的視圖。30Servlet的建議使用servlets實現服務:除了產生JSP一個JSP頁面是一個模板文檔,其中包含有特殊的標記用來執行內嵌的邏輯。JSP頁面可以被用來指定任何類型的動態內容,但是它們主要用來創建結構化的內容(如HTML,XML,XHTML,PDF)。5.顯示層技術-Web層31JSP一個JSP頁面是一個模板文檔,其中包含有特殊的標記用來JSP特點JSP頁面比servlets更容易書寫:JSP頁面看起來非常象HTML,帶有少量的附加標記,沒有重復的println()語句或者也不需要反斜線回退字符.5.顯示層技術-Web層32JSP特點JSP頁面比servlets更容易書寫:JSP頁面JSP頁面不需要編程技能:JSP頁面看起來很象它生成的文檔類型,文檔格式的專家可以不是一個程序員即可以直接編輯之。任何實際的編程或多或少地從顯示代碼中分離出來,因此程序員和文檔格式專家可以相對獨立地進行工作.5.顯示層技術-Web層33JSP頁面不需要編程技能:JSP頁面看起來很象它生成的文檔類JSP頁面支持代碼的重用:JSP頁面有顯式代碼重用機制。在一JSP頁面里面有一些特殊的標記來使用JavaBeans組件,編程人員可為其特殊的用途來定義可定制標記。JSP標記語言中的包括指示提供兩種文檔內容的重用:編譯時和運行時。這些機制可以通過減少重復代碼進而提高代碼的質量.5.顯示層技術-Web層34JSP頁面支持代碼的重用:JSP頁面有顯式代碼重用機制。在JSP頁面將功能從顯示中分離開來:JSP頁面格式是一針對某一文檔的模板,其中帶有業務邏輯,該邏輯要么嵌在JSP頁面中的特殊標記里(作為腳本元素),要么采用beans或可定制標記。分離功能(業務邏輯)與形式(顯示)允許程序員和文檔作者集中于他們的核心技能之上。這種對開發角色的劃分是J2EE平臺的主要優勢之一。5.顯示技術-Web層35JSP頁面將功能從顯示中分離開來:JSP頁面格式是一針對某JSP工作流程一個JSP頁面對其作者來說象一個文檔,然而Web容器實際上把JSP頁面作為servlets來實現。在一個JSP頁面可以運行在一JVM實例之上時,它必須被轉換成(通過一個轉換器)一個servlet,該servlet然后被編譯成一個可以裝載的類。一個JSP通常直接部署到一個Web容器之中,由容器來處理相應的翻譯和編譯。5.顯示層技術-Web層36JSP工作流程5.顯示層技術-Web層363737JSP的建議使用JSP頁面作為結構文本內容的模板:JSP頁面大多數是用來生成文本的內容通常有一致結構的文本。JSP頁面也被用來產生非結構化的文本文件。JSP頁面通常并不適合于以下的幾種情形:創建二進制內容、激活應用域邏輯、創建帶有高度可變結構的內容、或控制請求路由等等。5.顯示層技術-Web層38JSP的建議使用JSP頁面作為結構文本內容的模板:JSP頁面避免對邏輯標記的大量使用:標準標記庫通常提供一些邏輯標記用來循環、執行迭代、評估表達式、作出決定等。應該意識到使用標準標記庫可以執行JSP頁面中很大一部分邏輯。將邏輯放在程序以外的可定制標記之中提供的優勢較少,并且違背了邏輯和顯示的分離原則。5.顯示層技術-Web層39避免對邏輯標記的大量使用:標準標記庫通常提供一些邏輯標記用來正確使用JSPinclude指示與動作:<jsp:include>動作允許將或靜態的或動態的內容包含進此JSP頁面,指示通常用來模塊化Web頁面,重用內容,并保持Web頁面的長度可以被管理。如果濫用之,則使代碼膨脹。5.顯示層技術-Web層40正確使用JSPinclude指示與動作:<jsp:incWeb層狀態一個servlet、servlet過濾器或JSP頁面通常創建相應的帶有包含在該服務請求中數據的應答,不過經常需要來自于其它源的數據來處理它的工作。用來創建一個應答數據的一個Web層組件稱為狀態(state)。Web層狀態的每一項都有一個范圍(scope),用來決定此項目的訪問型及其生命周期。5.顯示層技術-Web層41Web層狀態一個servlet、servlet過濾器或JSP應用范圍/作用域(Applicationscope)應用范圍狀態存貯在Web層的ServletContext對象中,應用范圍中的對象在此應用內所有的servlets之間共享,線程安全由servlet開發人員負責。應用范圍中的狀態在應用的生存期間一直存在,除非它被顯式地刪除。為一個Web應用的“全局內存”。5.顯示層技術-Web層42應用范圍/作用域(Applicationscope)應用范servletAPI提供將數據與一個用戶會話關聯起來的機制,在后續的請求過程中訪問或修改此數據。對一個HttpServlet而言的會話范圍狀態存貯在Web層的HttpSession對象(由該服務方法的HttpServletRequest參數來提供)之中。是對于特定于某一用戶會話的數據。會話范圍(Sessionscope)5.顯示層技術-Web層43servletAPI提供將數據與一個用戶會話關聯起來的機制一個Web組件可以讀或修改在請求范圍內的數據然后轉交此請求給另一組件。請求被轉交給的組件然后就可以訪問到此狀態。請求范圍內的狀態存貯在一個ServletRequest對象里面,因此它可以被接收該請求的任何組件訪問到。特定于一個單獨的服務器請求的數據,當服務方法返回的時候被丟棄。請求范圍(Requestscope)5.顯示層技術-Web層44一個Web組件可以讀或修改在請求范圍內的數據然后轉交此請求給僅僅適用于JSP頁面,以指示該數據僅在當前頁面的上下文中有效。頁面范圍狀態存貯在一個JSP頁面的PageContext對象中。當一個JSP轉交給或包含另一個的時候,每一個頁面定義它自己的范圍。頁面范圍的狀態在程序從該頁面中退出的時候被丟棄掉。頁面范圍(Pagescope)5.顯示層技術-Web層45僅僅適用于JSP頁面,以指示該數據僅在當前頁面的上下文中有效Web層會話狀態的優勢易于實現:因為應用服務器處理了HttpSession的實現,開發人員從對管理會話狀態中所需要的設計、實現、測試代碼的細節中解脫出來。優化:一個應用服務器的HttpSession的實現是根據它本身作了優化和測試的,因此也許比一個客戶化的解決方案更為有效、可靠。5.顯示層技術-Web層46Web層會話狀態的優勢易于實現:因為應用服務器處理了Http潛在的更豐富的功能集:一個應用服務器對于會話狀態管理的實現可能包括諸如故障恢復、集群支持等功能,這已超出了J2EE平臺規范的基本需求。系統架構師可以區分服務器平臺所提供的功能,并選擇出最能適合當前應用需求的平臺,與此同時維護J2EE技術的兼容性和可移植性。5.顯示層技術-Web層47潛在的更豐富的功能集:一個應用服務器對于會話狀態管理的實現可可移植性:HttpSession接口是標準化的,因此在所有的J2EE品牌的應用服務器中都必須通過J2EE兼容性測試包(CTS)??缮炜s性:HttpSession可以有效地管理會話狀態的存貯,將它放在緩存和/或服務器集群之中。5.顯示層技術-Web層48可移植性:HttpSession接口是標準化的,因此在所有的可進化性(Evolvability):應用服務器廠商會堅持不懈地改善它們的產品及其功能,甚至在服務器增加某些提高性能和可靠性功能的時候,它將維護已有的接口以保證兼容性。一個HttpSession實現今天能正常工作,明天也將工作得更好,因為服務器版本的提升很少或根本就不做對源碼的修改。5.顯示層技術-Web層49可進化性(Evolvability):應用服務器廠商會堅持不5.2Web層設計問題及其指南Web層技術選擇5.顯示層技術-Web層設計問題及其指南Servlets和JSP頁面都是Web層組件,但是在設計中扮演的是不同的角色。XML可以被用來作為針對數據互操作性的“中心”格式,且可以在客戶端或服務器端以CSS或XSL的風格進行設計。505.2Web層設計問題及其指南Web層技術選擇5.顯示層何時使用JSP頁面:通常,JSP頁面大多用來作為顯示組件,在一個MVC應用中扮演View角色,或者用來創建結構化的、非可視化的內容,如XML消息。何時使用servlets:Servlets主要用來作為MVC控制器組件,作為框架支持組件(諸如模板處理器、安全適配器、日志器等等),或者作為對二進制內容的顯示組件。5.顯示層技術-Web層設計問題及其指南51何時使用JSP頁面:通常,JSP頁面大多用來作為顯示組件,在在交互式Web應用里面的XML:XML可以被使用于交互式的應用中。一個Web層控制器可以翻譯HTTP請求為對WebService方法的調用,并能使用CSS、XSL或可定制代碼來轉換調用的結果為正在請求的客戶端的顯示格式。這種方法只有在沒有更快、更可靠、或更輕量級的方式去訪問應用模型的時候才被建議使用,如直接訪問底層的企業級Java組件。5.顯示層技術-Web層設計問題及其指南52在交互式Web應用里面的XML:XML可以被使用于交互式的應Web層狀態維護狀態維護決定對應用性能、可用性、伸縮性等有著極大的影響。此類決定包括選擇相應的層來管理狀態,對狀態的每一項選擇相應的作用范圍,并且有效地跟蹤一分布式環境下的對話狀態。5.顯示層技術-Web層設計問題及其指南53Web層狀態維護5.顯示層技術-Web層設計問題及其指南Web層設計指南可維護性客戶端獨立性及代碼重用隔離開發人員的技能集將業務邏輯從顯示邏輯中分離出來:5.顯示層技術-Web層設計問題及其指南54Web層設計指南可維護性將業務邏輯從顯示邏輯中分離出來:5.在一個應用設計中創建業務和顯示層是一個很好的習慣。業務層只提供應用功能而不會有對顯示的引用,顯示層為用戶(或另一系統)顯示數據與輸入提示,委托應用功能給業務層。業務規則能夠在一個層中被修改,而對顯示層作很少或根本不作修改。應用的顯示或工作流程可以改變而不會影響業務邏輯代碼。5.顯示層技術-Web層設計問題及其指南55在一個應用設計中創建業務和顯示層是一個很好的習慣。業務層只提將協議置于模型API之外一個模型類應該在一個Web容器外是可用的。對Web容器的模型依賴導致不必要的耦合,降低設計清晰性并使維護和單元測試更為困難。5.顯示層技術-Web層設計問題及其指南56將協議置于模型API之外一個模型類應該在一個Web容器外是可5.3Web應用程序部署Web應用是一個Servlet、HTML頁面、類和其它資源的組合,應包含如下組件。Web應用組件構成5.顯示層技術-Web應用程序部署575.3Web應用程序部署Web應用是一個Servlet、HServletJSP實用程序類靜態文檔(HTML、圖片和聲音等)客戶端的Applet、Bean和類等描述性的元信息,用于把上面的所有組件組合到一起5.顯示層技術-Web應用程序部署58Servlet5.顯示層技術-Web應用程序部署58設置J2EE服務器環境變量:為運行J2EE服務器環境通常必須設置環境變量,而且不同的廠家實現和操作系統平臺上會有很大變化。配置J2EE服務器屬性:為大部分J2EE服務器實現配置屬性,使其適合于特定的網絡和操作環境。Web應用部署5.顯示層技術-Web應用程序部署59設置J2EE服務器環境變量:為運行J2EE服務器環境通常必須編譯J2EE應用程序代碼:所有J2EEWeb組件代碼必須用標準的Java編譯器編譯。創建J2EEWeb應用程序部署描述符:根據以前定義的Web應用程序DTD創建一個基于XML的發布描述符。5.顯示層技術-Web應用程序部署60編譯J2EE應用程序代碼:所有J2EEWeb組件代碼必須用封裝J2EEWeb應用程序代碼:Web發布描述符、所有編譯好的J2EEServlet類、所有HTML文件、所有圖形文件以及其它Web資源需要封裝到一個帶.war擴展名的Web應用程序歸檔文件中。5.顯示層技術-Web應用程序部署61封裝J2EEWeb應用程序代碼:Web發布描述符、所有編啟動J2EE服務器:這一步要啟動J2EE兼容的服務器。啟動服務器的機制通常與廠家有關,但也可以簡單到在命令行中激發單一的啟動命令。創建一個J2EE應用程序描述符:必須創建一個J2EE應用程序部署描述符把一個或多個Web、EJB和應用程序客戶模塊連接到J2EE應用程序中。5.顯示層技術-Web應用程序部署62啟動J2EE服務器:這一步要啟動J2EE兼容的服務器。啟動服封裝J2EE應用程序代碼:應用程序部署描述符、Web應用程序、EJB應用程序和應用程序客戶需要封裝到一個企業級歸檔(EAR)文件中,擴展名為.ear。發布J2EEWeb應用程序代碼:最后,集成J2EE應用程序部署到J2EE服務器環境中供企業應用程序客戶訪問。5.顯示層技術-Web應用程序部署63封裝J2EE應用程序代碼:應用程序部署描述符、Web應用程序5.3客戶層對一個企業級應用的用戶,客戶端就是應用。客戶端代表用戶向服務器發出請求,并將請求的結果顯示給用戶??蛻舳私洺<訌姅祿囊恢滦砸巹t,并可能實現一些業務邏輯。因此,挑選一種能最好地適合應用的需求且提供給用戶一個豐富接口的客戶端配置是很重要的。5.顯示層技術-Web層645.3客戶層對一個企業級應用的用戶,客戶端就是應用。客戶運行設備:一個便攜機、一個臺式機,或在一個PDA或電話上。J2EE平臺支持的客戶端網絡環境:從一個企業的Intrnet或互聯網可以連接到一個有線或無線的網絡。網絡環境:從一個企業的Intrnet或互聯網可以連接到一個有線或無線的網絡。5.顯示層技術-Web層65運行設備:一個便攜機、一個臺式機,或在一個PDA或電話上。J顯示方式:瀏覽器、GUI組件實現方式:HTML或Java,甚至可以是VisualBasic。實現功能:企業信息系統(EIS)客戶端:EIS客戶端使用一種接口(如JDBCAPI等)連接到EIS層。針對EIS的編程模型通常遵循兩層或三層客戶機/服務器體系結構的規范。5.顯示層技術-Web層66顯示方式:瀏覽器、GUI組件實現方式:HTML或Java,甚EJB客戶端:使用Java技術的EJB客戶端通過RMI(遠程方法調用)API來連接到EJB層。這種情況下,傳輸的協議為IIOP(Inter-ORBProtocol)。RMI機制為Java客戶端開發人員隱藏了IIOP的細節,但是使用非Java技術的開發人員也可以通過IIOP連接到EJB層。5.顯示層技術-Web層67EJB客戶端:使用Java技術的EJB客戶端通過RMI(遠Web客戶端:Web客戶端使用HTTP作為傳輸協議連接到Web層。Web客戶端的類型不僅包括瀏覽器,而且包括JavaApplets、MIDIets和應用以及其它的企業服務。5.顯示層技術-Web層68Web客戶端:Web客戶端使用HTTP作為傳輸協議連接到We服務器端體系結構:在Web上最簡單和最常用的體系結構是完全依靠服務器來提供用戶界面內容、它的構造邏輯以及與用戶的相互作用。每一個用戶動作都產生一個對服務器的請求,服務器處理這個請求并計算結果,生成一個新的頁面再次發送到客戶端。客戶端三種體系結構5.顯示層技術-Web層69服務器端體系結構:在Web上最簡單和最常用的體系結構是完全依用戶動作內容和控制的產生瀏覽器客戶機響應請求內容構建業務邏輯控制邏輯服務器服務器端體系結構好處:所需客戶端資源少,應用邏輯不用裝入,啟動用戶交互所需的網絡通信量很少。支持的技術包括JavaServlet,JavaServerPages。70用戶動作內容和控制的產生瀏覽器客戶機響應請求內容構建業務邏輯客戶端腳本體系結構:該方式就是將腳本作為HTML頁面的一部分,將動態內容從服務器傳送給客戶端。腳本通常包括一些不需與服務器應用程序通信就能在客戶端執行的應用邏輯。復雜邏輯仍然由服務器執行。5.顯示層技術-Web層71客戶端腳本體系結構:該方式就是將腳本作為HTML頁面的一部分客戶端腳本體系結構用戶請求頁面切換頁面/簡單控制邏輯瀏覽器客戶機響應內容構建+邏輯嵌入商業邏輯切換/復雜控制邏輯服務器產生內容修改72客戶端腳本體系結構用戶請求頁面切換頁面/簡單控制邏輯瀏覽器客客戶端應用體系結構:提供一個運行在客戶端的功能完全的應用程序。用戶可以下載這個程序,此后它將控制用戶的交互和內容構造。當服務器上的業務邏輯必須初始化時,通信才成為必要。

好處:將用戶界面和業務邏輯的區別去掉了;和用戶交互時于服務器的通信很少;Web頁面可離線瀏覽;不需要很多服務器資源。5.顯示層技術-Web層73客戶端應用體系結構:提供一個運行在客戶端的功能完全的應用程序客戶端應用體系結構通信邏輯瀏覽器客戶機下載通信邏輯商業邏輯下載+版本控制服務器控制邏輯內容構建邏輯用戶開始應用程序Applet應用請求74客戶端應用體系結構通信邏輯瀏覽器客戶機下載通信邏輯商業邏輯下設置J2EE服務器環境變量:為運行J2EE服務器環境通常必須設置環境變量,而且不同的廠家實現和操作系統平臺上會有很大變化。配置J2EE服務器屬性:為大部分J2EE服務器實現配置屬性,使其適合于特定的網絡和操作環境。Web應用部署5.顯示層技術-Web層75設置J2EE服務器環境變量:為運行J2EE服務器環境通常必須

客戶層的實現J2EE平臺一般鼓勵“瘦客戶端”配置,因為組件模型將繁重的功能如業務操作和述訪問交給服務器進行處理。這并不是說,J2EE客戶端就是啞終端;一個J2EE應用客戶端可以處理一系列的事情,如消息、顯示、輸入校驗和會話管理。

5.顯示層技術-Web層76

客戶層的實現5.顯示層技術-Web層76Web瀏覽器:瀏覽器是J2EE客戶端最簡單的一種類型。它們顯示以某些標記語言來書寫的文檔,該標記語言指定要顯示的數據以及那些數據該怎樣被顯示。Javaapplet客戶端:Javaapplet客戶端是用戶接口組件典型地在一個Web瀏覽器內執行,盡管它們可以在多種支持applet編程模型的其它應用或設備中執行。5.顯示層技術-Web層77Web瀏覽器:瀏覽器是J2EE客戶端最簡單的一種類型。它們顯瀏覽器Javaapplet消息和顯示HTML格式,Servlet,JSPGUI組件,JFC/SwingAPI,RMI有效性檢驗內嵌JavaScript在一個html頁面里。內嵌JavaScript在一個html頁面里。會話管理Cookies,URLRewritingCookies,URLRewriting安全管理httpshttps5.顯示層技術-Web層78瀏覽器Javaapplet消息和顯示HTML格式,ServApacheStruts是一個免費的開源的WEB層的應用框架。一個前端控制組件,一系列動作類,動作映射,處理XML的實用工具類,服務器端javabean的自動填充,支持驗證的WEB表單,國際化支持,生成HTML,實現表現邏輯和模版組成了struts的靈魂。

應用示例5.顯示層技術-Web層79ApacheStruts是一個免費的開源的WEB層的應用框客戶端應用體系結構80客戶端應用體系結構80Web層Web層設計中的問題與指南Web應用程序部署客戶端5.顯示層技術81Web層5.顯示層技術15.1Web層Web層的工作就是接收來自于HTTP客戶端的輸入,將收到的輸入交給內部的業務邏輯進行處理,然后將結果通過HTTP協議送回客戶端。5.顯示層技術-Web層在基于Interent的分布式應用框架中,顯示層一般由Web層和客戶端兩部分組成。825.1Web層Web層的工作就是接收來自于HTTP客戶端的JSP文件:從HTTP的請求中提取參數,調用相應的業務邏輯,處理HTTP會話,最后生成HTTP文檔??偟目磥?,這個模型的好處是簡單,但是它把業務邏輯和表現混在一塊,對大應用來說,這個缺點是令人容忍不了的。兩種模型瀏覽器數據庫BeanJSP文件5.顯示層技術-Web層83JSP文件:從HTTP的請求中提取參數,調用相應的業務邏輯,MVC模式(Model/View/Controller)

5.顯示層技術-Web層定義:MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。視圖:用戶看到并與之交互的界面。對老式的Web應用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,還包括MacromediaFlash和象XHTML,XML/XSL,WML等一些標識語言和Webservices。84MVC模式(Model/View/Controller)5模型:表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。被模型返回的數據是中立的,即模型與數據格式無關。5.顯示層技術-Web層控制器:接受用戶的輸入,根據請求決定調用模型構件去處理請求,然后確定用哪個視圖來顯示模型處理返回的數據。85模型:表示企業數據和業務規則。在MVC的三個部件中,模型擁有866為什么要使用MVC5.顯示層技術-Web層多個視圖能共享一個模型。由于MVC已經將數據和業務規則從表示層分開,無論用戶想要Flash界面或是WAP界面,用一個模型就能處理它們,可以最大化的重用代碼。模型返回的數據沒有進行格式化,所以同樣的構件能被不同界面使用。87為什么要使用MVC5.顯示層技術-Web層多個視圖能共享一5.顯示層技術-Web層由于運用MVC的應用程序的三個部件是相互對立,改變其中一個不會影響其它兩個,所以依據這種設計思想能構造良好的松偶合的構件??梢允褂每刂破鱽砺摻硬煌哪P秃鸵晥D去完成用戶的需求,這樣控制器可以為構造應用程序提供強有力的手段。885.顯示層技術-Web層由于運用MVC的應用程序的三個部件是MVC的缺點使用MVC需要精心的計劃,花費相當可觀的時間去考慮如何將MVC運用到應用程序,同時由于模型和視圖要嚴格的分離,這樣也給調試應用程序到來了一定的困難。所以使用MVC同時也意味著要管理比以前更多的文件,增加了工作量。5.顯示層技術-Web層89MVC的缺點5.顯示層技術-Web層95.顯示層技術-Web層MVC設計模式是一個很好創建軟件的途徑,但是如果要隔離模型、視圖和控制器的構件,則要重新思考應用程序,尤其是應用程序的構架。MVC并不適合小型甚至中等規模的應用程序,花費大量時間將MVC應用到規模并不是很大的應用程序通常會得不償失。905.顯示層技術-Web層MVC設計模式是一個很好創建軟件交付應用的功能到Web之上:應用設計通常將業務邏輯從數據顯示中分離出來。Web層為后端應用模型中的業務邏輯(可以被其它類型的客戶端共享訪問),接收HTTP輸入并產生HTTP輸出。Web層的功能5.顯示層技術-Web層91交付應用的功能到Web之上:應用設計通常將業務邏輯從數據顯示動態內容創建:Web層組件為產生動態Web內容來設計的。Servlets和JSP頁面可以基于用戶的輸入與上下文將來自于多種源的數據格式轉化為任意的數據格式。屏幕流程:由于屏幕流程往往對應到特定的客戶端的動作,因此決定下一屏幕(也即哪個頁面)應該顯示什么的邏輯一般駐留在Web層。5.顯示層技術-Web層92動態內容創建:Web層組件為產生動態Web內容來設計的。Se數據表示和輸入收集:Web層和Web客戶端進行通訊以使得格式化代碼的Web文檔自然就屬于Web層。其次,用戶的輸入以HTTP的PUT和GET動作到達Web層,Web層收到這些動作即將其翻譯為某種形式(經常是某種形式的命令對象)以便其余的應用可以理解。5.顯示層技術-Web層93數據表示和輸入收集:Web層和Web客戶端進行通訊以使得格式狀態管理:Web層有一個簡單的、靈活的機制用來在一個用戶的會話期間積聚相應的事務型數據和上下文數據。協議轉換:EJB服務器、數據庫、EIS層資源管理器和其它的網絡資源都有它們自己的協議。Web層作為一個軟件層,把來自于其它協議的請求和應答翻譯為HTTP形式,或者,把HTTP請求和應答翻譯成其它協議的形式。5.顯示層技術-Web層94狀態管理:Web層有一個簡單的、靈活的機制用來在一個用戶的會對多種潛在的客戶端類型的支持:Web使用HTTP協議來傳送數據給客戶端,數據通過MIME類型(一種擴展的內容分類機制)來描述。任何HTTP形式的客戶端都能夠加入一個Web應用,且此客戶端能夠使用可以下載內容的任意類型,即使內容的類型還未存在。5.顯示層技術-Web層95對多種潛在的客戶端類型的支持:Web使用HTTP協議來傳送數J2EE的Web層技術提供了服務器的擴展機制,該機制提供了一種基于服務器端腳本設計所帶來的好處,并且采用的是一種標準的、安全的、廠商中立的方法。Web應用及支持它的Web層技術包括Web檔案(archive)、Web層組件模型、servlets,JSP及J2EE的Web容器。Web層技術5.顯示層技術-Web層96J2EE的Web層技術提供了服務器的擴展機制,該機制提供了一Web檔案:對一個Web應用的打包和部署之單元稱之為一個Web檔案(Webarchive,以“.war”作為文件名的結尾),此文件包含當前Web應用的所有類文件與資源,Web檔案也包含一個配置該應用的部署描述器文件。5.顯示層技術-Web層97Web檔案:對一個Web應用的打包和部署之單元稱之為一個WeWeb容器:一個容器是位于服務器里面的類之集合,它們相互合作以管理組件實例的生命周期并對那些實例提供數據和服務。J2EE規范定義了一個在Web容器與每一Web組件之間的約定/契約,用以定義組件的生命周期、組件必須實現的行為、以及服務器必須提供給該組件的服務。5.顯示層技術-Web層98Web容器:一個容器是位于服務器里面的類之集合,它們相互合作Web容器的作用:分發服務請求:容器分發服務請求給它所包含的組件,將上下文數據(如會話數據與當前請求的信息)提供給組件,并且協調該組件響應內容的產生。HTTP請求的應答:對于URL的HTTP請求翻譯成對組件實例的調用,并將基于組件所產生的內容生成相應的HTTP應答。5.顯示層技術-Web層99Web容器的作用:分發服務請求:容器分發服務請求給它所包含的組件生命周期的管理:Web容器通過回叫(callback)的方式來通知組件的狀態變化如實例初始化和消亡,實現對其組件的生命周期管理。5.顯示層技術-Web層100組件生命周期的管理:Web容器通過回叫(callback)的Servlet是一種Java平臺服務器端擴展組件,它運行在一個Web容器的里面。在一個Web應用中,每一Servlet的類都被映射成Web服務器中的一個或多個URL地址。當服務器接收到對某個servlet的URL的一個HTTP請求(GET,POST等)的時候,服務器調用相應的servlet的服務方法(service()),該方法產生此應答的動態內容。

Servlet5.顯示層技術-Web層101Servlet是一種Java平臺服務器端擴展組件,它運行在一Servlets特點Servlets采用Java來書寫,因此能夠運行在一個內嵌在WebServer里面的JVM實例之上。Servlets通常比CGI程序或腳本要快,因為它們運行的形式是編譯過的字節碼,取代的是一個笨重的進程或一個解釋腳本。5.顯示層技術-Web層102Servlets特點Servlets采用Java來書寫,因此Servlets比擴展庫要安全,因為JVM實例通??梢曰謴鸵粋€非正常退出的servlet。與服務器端腳本技術相比,servlets的移植性更好,并且它所提供的是一個更為豐富的標準服務的集合。5.顯示層技術-Web層103Servlets比擴展庫要安全,因為JVM實例通??梢曰謴鸵挥捎贘ava平臺所固有的運行時的可移植性,編譯過的servlet類具備二進制形式的跨硬件平臺的移植性;servlet與其容器之間的契約由JavaServlet規范予以定義并且由J2EE兼容測試包檢驗過(在一個J2EE品牌的產品里),因此servlets也可以跨Web服務器兼容。5.顯示層技術-Web層104由于Java平臺所固有的運行時的可移植性,編譯過的servlServlet開發人員可以創建能在所有J2EE品牌服務器上正確運行的產品,J2EE服務器用戶可以更換技術廠商而只做很小的甚至根本就不需要更改它們的應用代碼。打包和部署servlets(及其它的Web層組件和資源)的規范化和標準化,確保了一個Web應用不用作任何代碼修改或重建,就可以作為一個單獨的單元部署到任何J2EE品牌的服務器里面。5.顯示層技術-Web層105Servlet開發人員可以創建能在所有J2EE品牌服務器上正Servlet存在的問題Servlets寫起來比較冗長:很多產生HTML的servlets比起Web頁面要長一些,它帶有以System.out.println()環繞的每一行、在每一個雙引號之前都有反斜線符號、并且可能一塊邏輯或這里和那里的重述。這樣的servlets寫起來比較煩悶,而且讀和維護都是比較困難的。5.顯示層技術-Web層106Servlet存在的問題Servlets寫起來比較冗長:很Servlets是程序:對于所有的哪怕是最簡單的情況,servlets都需要編程人員來開發和維護。程序員不必熟悉圖形設計,圖形設計人員經常不是程序員。聯合編程邏輯和先進的可視化設計的servlets對于程序員和圖形設計人員來講,更改起來都是比較困難的。5.顯示層技術-Web層107Servlets是程序:對于所有的哪怕是最簡單的情況,seServlet代碼不易重用:基于HTML的Web應用通常包括大量的重復,很多使用的場合多次放在一個Web應用中,HTML頁面經常包含重復的樣式元素來提供一致的外觀和感覺。但是servlet的API提供很少對于重用業務或顯示邏輯的直接支持,結果通常是剪切與粘貼式的編碼風格犧牲了一致性與可維護性。5.顯示層技術-Web層108Servlet代碼不易重用:基于HTML的Web應用通常包Servlets混合功能代碼和顯示代碼在一起:這種做法限制看起來很小,實際上它往往是所有其它問題的根源?;镜膯栴}是業務邏輯和數據表示基本上是不同的層面,將這兩者混合在一種單一的技術(既servlet)導致的是混淆設計、實現和維護。5.顯示層技術-Web層109Servlets混合功能代碼和顯示代碼在一起:這種做法限制Servlet的建議使用servlets實現服務:除了產生二進制內容以外,servlets一般提供無可視化的功能。一個servlet可以執行它所提供的服務—模板化、安全、個性化、MVC控制—然后選擇一個顯示組件并轉交請求給該組件去顯示。5.顯示層技術-Web層使用servlets作為控制器:一個Web層控制器,用來決定如何處理一個請求并選擇下一個要顯示的視圖。110Servlet的建議使用servlets實現服務:除了產生JSP一個JSP頁面是一個模板文檔,其中包含有特殊的標記用來執行內嵌的邏輯。JSP頁面可以被用來指定任何類型的動態內容,但是它們主要用來創建結構化的內容(如HTML,XML,XHTML,PDF)。5.顯示層技術-Web層111JSP一個JSP頁面是一個模板文檔,其中包含有特殊的標記用來JSP特點JSP頁面比servlets更容易書寫:JSP頁面看起來非常象HTML,帶有少量的附加標記,沒有重復的println()語句或者也不需要反斜線回退字符.5.顯示層技術-Web層112JSP特點JSP頁面比servlets更容易書寫:JSP頁面JSP頁面不需要編程技能:JSP頁面看起來很象它生成的文檔類型,文檔格式的專家可以不是一個程序員即可以直接編輯之。任何實際的編程或多或少地從顯示代碼中分離出來,因此程序員和文檔格式專家可以相對獨立地進行工作.5.顯示層技術-Web層113JSP頁面不需要編程技能:JSP頁面看起來很象它生成的文檔類JSP頁面支持代碼的重用:JSP頁面有顯式代碼重用機制。在一JSP頁面里面有一些特殊的標記來使用JavaBeans組件,編程人員可為其特殊的用途來定義可定制標記。JSP標記語言中的包括指示提供兩種文檔內容的重用:編譯時和運行時。這些機制可以通過減少重復代碼進而提高代碼的質量.5.顯示層技術-Web層114JSP頁面支持代碼的重用:JSP頁面有顯式代碼重用機制。在JSP頁面將功能從顯示中分離開來:JSP頁面格式是一針對某一文檔的模板,其中帶有業務邏輯,該邏輯要么嵌在JSP頁面中的特殊標記里(作為腳本元素),要么采用beans或可定制標記。分離功能(業務邏輯)與形式(顯示)允許程序員和文檔作者集中于他們的核心技能之上。這種對開發角色的劃分是J2EE平臺的主要優勢之一。5.顯示技術-Web層115JSP頁面將功能從顯示中分離開來:JSP頁面格式是一針對某JSP工作流程一個JSP頁面對其作者來說象一個文檔,然而Web容器實際上把JSP頁面作為servlets來實現。在一個JSP頁面可以運行在一JVM實例之上時,它必須被轉換成(通過一個轉換器)一個servlet,該servlet然后被編譯成一個可以裝載的類。一個JSP通常直接部署到一個Web容器之中,由容器來處理相應的翻譯和編譯。5.顯示層技術-Web層116JSP工作流程5.顯示層技術-Web層3611737JSP的建議使用JSP頁面作為結構文本內容的模板:JSP頁面大多數是用來生成文本的內容通常有一致結構的文本。JSP頁面也被用來產生非結構化的文本文件。JSP頁面通常并不適合于以下的幾種情形:創建二進制內容、激活應用域邏輯、創建帶有高度可變結構的內容、或控制請求路由等等。5.顯示層技術-Web層118JSP的建議使用JSP頁面作為結構文本內容的模板:JSP頁面避免對邏輯標記的大量使用:標準標記庫通常提供一些邏輯標記用來循環、執行迭代、評估表達式、作出決定等。應該意識到使用標準標記庫可以執行JSP頁面中很大一部分邏輯。將邏輯放在程序以外的可定制標記之中提供的優勢較少,并且違背了邏輯和顯示的分離原則。5.顯示層技術-Web層119避免對邏輯標記的大量使用:標準標記庫通常提供一些邏輯標記用來正確使用JSPinclude指示與動作:<jsp:include>動作允許將或靜態的或動態的內容包含進此JSP頁面,指示通常用來模塊化Web頁面,重用內容,并保持Web頁面的長度可以被管理。如果濫用之,則使代碼膨脹。5.顯示層技術-Web層120正確使用JSPinclude指示與動作:<jsp:incWeb層狀態一個servlet、servlet過濾器或JSP頁面通常創建相應的帶有包含在該服務請求中數據的應答,不過經常需要來自于其它源的數據來處理它的工作。用來創建一個應答數據的一個Web層組件稱為狀態(state)。Web層狀態的每一項都有一個范圍(scope),用來決定此項目的訪問型及其生命周期。5.顯示層技術-Web層121Web層狀態一個servlet、servlet過濾器或JSP應用范圍/作用域(Applicationscope)應用范圍狀態存貯在Web層的ServletContext對象中,應用范圍中的對象在此應用內所有的servlets之間共享,線程安全由servlet開發人員負責。應用范圍中的狀態在應用的生存期間一直存在,除非它被顯式地刪除。為一個Web應用的“全局內存”。5.顯示層技術-Web層122應用范圍/作用域(Applicationscope)應用范servletAPI提供將數據與一個用戶會話關聯起來的機制,在后續的請求過程中訪問或修改此數據。對一個HttpServlet而言的會話范圍狀態存貯在Web層的HttpSession對象(由該服務方法的HttpServletRequest參數來提供)之中。是對于特定于某一用戶會話的數據。會話范圍(Sessionscope)5.顯示層技術-Web層123servletAPI提供將數據與一個用戶會話關聯起來的機制一個Web組件可以讀或修改在請求范圍內的數據然后轉交此請求給另一組件。請求被轉交給的組件然后就可以訪問到此狀態。請求范圍內的狀態存貯在一個ServletRequest對象里面,因此它可以被接收該請求的任何組件訪問到。特定于一個單獨的服務器請求的數據,當服務方法返回的時候被丟棄。請求范圍(Requestscope)5.顯示層技術-Web層124一個Web組件可以讀或修改在請求范圍內的數據然后轉交此請求給僅僅適用于JSP頁面,以指示該數據僅在當前頁面的上下文中有效。頁面范圍狀態存貯在一個JSP頁面的PageContext對象中。當一個JSP轉交給或包含另一個的時候,每一個頁面定義它自己的范圍。頁面范圍的狀態在程序從該頁面中退出的時候被丟棄掉。頁面范圍(Pagescope)5.顯示層技術-Web層125僅僅適用于JSP頁面,以指示該數據僅在當前頁面的上下文中有效Web層會話狀態的優勢易于實現:因為應用服務器處理了HttpSession的實現,開發人員從對管理會話狀態中所需要的設計、實現、測試代碼的細節中解脫出來。優化:一個應用服務器的HttpSession的實現是根據它本身作了優化和測試的,因此也許比一個客戶化的解決方案更為有效、可靠。5.顯示層技術-Web層126Web層會話狀態的優勢易于實現:因為應用服務器處理了Http潛在的更豐富的功能集:一個應用服務器對于會話狀態管理的實現可能包括諸如故障恢復、集群支持等功能,這已超出了J2EE平臺規范的基本需求。系統架構師可以區分服務器平臺所提供的功能,并選擇出最能適合當前應用需求的平臺,與此同時維護J2EE技術的兼容性和可移植性。5.顯示層技術-Web層127潛在的更豐富的功能集:一個應用服務器對于會話狀態管理的實現可可移植性:HttpSession接口是標準化的,因此在所有的J2EE品牌的應用服務器中都必須通過J2EE兼容性測試包(CTS)。可伸縮性:HttpSession可以有效地管理會話狀態的存貯,將它放在緩存和/或服務器集群之中。5.顯示層技術-Web層128可移植性:HttpSession接口是標準化的,因此在所有的可進化性(Evolvability):應用服務器廠商會堅持不懈地改善它們的產品及其功能,甚至在服務器增加某些提高性能和可靠性功能的時候,它將維護已有的接口以保證兼容性。一個HttpSession實現今天能正常工作,明天也將工作得更好,因為服務器版本的提升很少或根本就不做對源碼的修改。5.顯示層技術-Web層129可進化性(Evolvability):應用服務器廠商會堅持不5.2Web層設計問題及其指南Web層技術選擇5.顯示層技術-Web層設計問題及其指南Servlets和JSP頁面都是Web層組件,但是在設計中扮演的是不同的角色。XML可以被用來作為針對數據互操作性的“中心”格式,且可以在客戶端或服務器端以CSS或XSL的風格進行設計。1305.2Web層設計問題及其指南Web層技術選擇5.顯示層何時使用JSP頁面:通常,JSP頁面大多用來作為顯示組件,在一個MVC應用中扮演View角色,或者用來創建結構化的、非可視化的內容,如XML消息。何時使用servlets:Servlets主要用來作為MVC控制器組件,作為框架支持組件(諸如模板處理器、安全適配器、日志器等等),或者作為對二進制內容的顯示組件。5.顯示層技術-Web層設計問題及其指南131何時使用JSP頁面:通常,JSP頁面大多用來作為顯示組件,在在交互式Web應用里面的XML:XML可以被使用于交互式的應用中。一個Web層控制器可以翻譯HTTP請求為對WebService方法的調用,并能使用CSS、XSL或可定制代碼來轉換調用的結果為正在請求的客戶端的顯示格式。這種方法只有在沒有更快、更可靠、或更輕量級的方式去訪問應用模型的時候才被建議使用,如直接訪問底層的企業級Java組件。5.顯示層技術-Web層設計問題及其指南132在交互式Web應用里面的XML:XML可以被使用于交互式的應Web層狀態維護狀態維護決定對應用性能、可用性、伸縮性等有著極大的影響。此類決定包括選擇相應的層來管理狀態,對狀態的每一項選擇相應的作用范圍,并且有效地跟蹤一分布式環境下的對話狀態。5.顯示層技術-Web層設計問題及其指南133Web層狀態維護5.顯示層技術-Web層設計問題及其指南Web層設計指南可維護性客戶端獨立性及代碼重用隔離開發人員的技能集將業務邏輯從顯示邏輯中分離出來:5.顯示層技術-Web層設計問題及其指南134Web層設計指南可維護性將業務邏輯從顯示邏輯中分離出來:5.在一個應用設計中創建業務和顯示層是一個很好的習慣。業務層只提供應用功能而不會有對顯示的引用,顯示層為用戶(或另一系統)顯示數據與輸入提示,委托應用功能給業務層。業務規則能夠在一個層中被修改,而對顯示層作很少或根本不作修改。應用的顯示或工作流程可以改變而不會影響業務邏輯代碼。5.顯示層技術-Web層設計問題及其指南135在一個應用設計中創建業務和顯示層是一個很好的習慣。業務層只提將協議置于模型API之外一個模型類應該在一個Web容器外是可用的。對Web容器的模型依賴導致不必要的耦合,降低設計清晰性并使維護和單元測試更為困難。5.顯示層技術-Web層設計問題及其指南136將協議置于模型API之外一個模型類應該在一個Web容器外是可5.3Web應用程序部署Web應用是一個Servlet、HTML頁面、類和其它資源的組合,應包含如下組件。Web應用組件構成5.顯示層技術-Web應用程序部署1375.3Web應用程序部署Web應用是一個Servlet、HServletJSP實用程序類靜態文檔(HTML、圖片和聲音等)客戶端的Applet、Bean和類等描述性的元信息,用于把上面的所有組件組合到一起5.顯示層技術-Web應用程序部署138Servlet5.顯示層技術-Web應用程序部署58設置J2EE服務器環境變量:為運行J2EE服務器環境通常必須設置環境變量,而且不同的廠家實現和操作系統平臺上會有很大變化。配置J2EE服務器屬性:為大部分J2EE服務器實現配置屬性,使其適合于特定的網絡和操作環境。Web應用部署5.顯示層技術-Web應用程序部署139設置J2EE服務器環境變量:為運行J2EE服務器環境通常必須編譯J2EE應用程序代碼:所有J2EEWeb組件代碼必須用標準的Java編譯器編譯。創建J2EEWeb應用程序部署描述符:根據以前定義的Web應用程序DTD創建一個基于XML的發布描述符。5.顯示層技術-Web應用程序部署140編譯J2EE應用程序代碼:所有J2EEWeb組件代碼必須用封裝J2EEWeb應用程序代碼:Web發布描述符、所有編譯好的J2EEServlet類、所有HTML文件、所有圖形文件以及其它Web資源需要封裝到一個帶.war擴展名的Web應用程序歸檔文件中。5.顯示層技術-Web應用程序部署141封裝J2EEWeb應用程序代碼:Web發布描述符、所有編啟動J2EE服務器:這一步要啟動J2EE兼容的服務器。啟動服務器的機制通常與廠家有關,但也可以簡單到在命令行中激發單一的啟動命令。創建一個J2EE應用程序描述符:必須創建一個J2EE應用程序部署描述符把一個或多個Web、EJB和應用程序客戶模塊連接到J2EE應用程序中。5.顯示層技術-Web應用程序部署142啟動J2EE服務器:這一步要啟動J2EE兼容的服務器。啟動服封裝J2EE應用程序代碼:應用程序部署描述符、Web應用程序、EJB應用程序和應用程序客戶需要封裝到一個企業級歸檔(EAR)文件中,擴展名為.ear。發布J2EEWeb應用程序代碼:最后,集成J2EE應用程序部署到J2EE服務器環境中供企業應用程序客戶訪問。5.顯示層技術-Web應用程序部署143封裝J2EE應用程序代碼:應用程序部署描述符、Web應用程序5.3客戶層對一個企業級應用的用戶,客戶端就是應用??蛻舳舜碛脩粝蚍掌靼l出請求,并將請求的結果顯示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論