




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
中間件技術1課程內容概述J2EE架構基礎Servlet、JSP、EJB開發(fā)J2EE應用部署J2EE應用開發(fā)架構實例2軟件開發(fā)技術的發(fā)展基于主機的系統(tǒng)兩層的Client/Server系統(tǒng)三層(n層)體系架構表示層業(yè)務邏輯層數據層基于Web的三層(n層)體系架構3中間件技術最早具有中間件技術思想及功能的軟件是IBM在60年代開發(fā)的CICS(CustomerInformationControlSystem)。80年代初期,SunMicrosystems開發(fā)了一種最早的中間件,作為其開放網絡體系結構的一部分,這種中間件是基于RPC協(xié)議的。但由于CICS不是分布式環(huán)境的產物,而SunMicrosystems開發(fā)的不是完整的中間件產品,因此人們一般把Tuxedo作為第一個嚴格意義上的中間件產品,Tuxedo是在1984年由AT&T的貝爾實驗室開發(fā)完成的。到90年代,中間件技術得到了巨大的發(fā)展和廣泛的應用,出現(xiàn)了大量具有廣泛影響的中間件產品,如OMG的Corba、Microsoft的DCOM/COM+、IBM的MQS等。4中間件技術中間件是基礎軟件,處于操作系統(tǒng)(或網絡協(xié)議)與分布式應用之間,從而屏蔽操作系統(tǒng)(或網絡協(xié)議)的差異,實現(xiàn)分布式異構系統(tǒng)之間的互操作。目前,對中間件還沒有形成一個統(tǒng)一的定義,比較公認的IDC的定義是:中間件是一種獨立的系統(tǒng)軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源,中間件位于客戶機服務器的操作系統(tǒng)之上,管理計算資源和網絡通信。5中間件技術分類:消息中間件(MOM:Message-OrientedMiddleware)數據庫中間件(DatabaseMiddleware)遠程過程調用中間件(RPC:RemoteProcessCall)對象請求代理中間件(ORB:ObjectRequestBroker)事務處理中間件(TPMonitor:TransactionProcessMonitor)J2EE中間件6企業(yè)級應用的要求分布式可移植面向Web體系滿足企業(yè)計算要求一致性事務性安全性好的特性可伸縮可擴展易維護遺留系統(tǒng)集成以上要求需要一個良好的基礎架構來支持7企業(yè)級應用環(huán)境8什么是J2EE?
Java2Platform,EnterpriseEdition(J2EE)Openandstandardbasedplatformfordeveloping,deployingandmanagingn-tier,Web-enabled,server-centric,andcomponent-basedenterpriseapplications運用Java技術開發(fā)企業(yè)應用的標準包括了多層應用開發(fā)模型開發(fā)平臺-APIs和服務測試軟件包參考實現(xiàn)將所有Sun的企業(yè)技術集合在一個體系結構下的平臺特定版本下的EJB,Servlet,JSPJavaWebServerJNDI,JDBC,JTA,JMS,JavaMail,CORBA…9Java2Platform10J2EE可可以提提供什什么分布式式、可可移植植構件件的框框架簡化服服務器器端中中間層層構件件的設設計為構件和應應用服務器器提供標準準API11J2EE可可以為開發(fā)發(fā)者和用戶戶帶來更短的開發(fā)發(fā)時間可重用組件件JSPEJB自由的選擇擇基于開放的的標準簡化的連接接XML,JDBC,,RMI-IIOP,WebService12J2EE技技術架構構任何平臺Java虛擬機J2EEFramework安全組件組件組件組件JCAebXMLJTAJMS…13BrowserServletor
JSPContainersEJBServerBCHTTPEntity
BeanHOMEREMOTESession
BeanHOMEREMOTEDataADataJDBCRMI/IIOPJDBCAppServerJ2EE應應用體系系結構14J2EE是是端到端的的解決方案案15N層J2EE體系架架構16J2EE主主要技術概概覽展示層––ServLet/JSP中間層––EJB中間層可用用的企業(yè)服服務事務服務JTA目錄服務JNDI消息服務JMS異步組件Message-DrivenEJB數據層-JDBC遠程調用––RMI/IIOP使用現(xiàn)有資資源-JCA17J2EE1.4Contents18.Net與與J2EE的比較較WS-IWindowsCLR.NET安全適配器編排服務企業(yè)服務消息隊列LinuxJVMJ2EESecurityJCAebXMLJTAJMS……19Web架架構:J2EEvs.NET表示層業(yè)務邏輯層層數據層J2EECLR.NETAssemblyADO.NET(可使用COM+服務;比如事事務)Web表表單Server控件件Code-BehindASP.NETIISJavaBeansEJBsJSPServlets可運行于大大多數主要要應用及Web服務務器支持大多數數數據庫(通過JDBC驅動程程序)J2SE/EEJDBC(事務使使用JTA).NETSQLServerOracleDB/2,etc.SQLServerOracleDB/2,etc.狀態(tài):ASP.NETSession,
.NET數據據緩存狀態(tài):封封裝于EJB中中,也可可在在WebSessions中中20J2EE/.NET主主要要技技術術比比較較JDBCJTAJNDIJMSJavaMailRMI/IIOPJAFADO.NET.NETTransactionActiveDirectory.NETMessagingSmtpMailWebService/Remoting.NETJIT21技術的成熟熟性MicrosoftJ2EE199619971998199920002001MSXMLJAXPASPJSPMTS/COM+EJBODBCJDBCMar1992ADSIJNDIQCMDBLCEMMCWinDNAJ2EEMSMQJMSVS.Net.Net22J2EE的移植植性與互互操作性性理論上J2EE應用可可以采用用多個廠廠商的產產品只要符合合J2EE的標標準實際情況況J2EE標準不不完整,,如WebServiceJ2EE的技術術需改進進,如EJB各廠商發(fā)發(fā)展各自自的技術術不同產品品很難協(xié)協(xié)同和移移植J2EE可選擇擇同一廠廠商支持持的不同同操作系系統(tǒng)23.Net的移植植性與互互操作性性理論上.Net應用可可移植到到任何平平臺CLS提交給給標準化組織織只要支持CLR實際情況只有Windows/FreeBSD.Net支持持WebService可以使用任何何平臺運行的的WebService任何平臺可使使用.NetWebService24技術比較結論論.Net和J2EE應用用有著相似的的架構.Net和J2EE有相相應的主要技技術.Net所有有技術來自MicrosoftJ2EE的技技術有多個廠廠商的實現(xiàn).Net和J2EE可以以滿足大多數數應用的需求求主要的差別不不在技術的可可行性上開發(fā)效率性能成本穩(wěn)定性25開發(fā)工具JBuilder商用功能完備EclipseOpenSource插件豐富myEclipse版本管理CVS26J2EE應應用開發(fā)編寫和編譯組組件代碼Servlet,JSP,EJB編寫組件的部部署描述符把組件裝配成成可部署的軟軟件包將軟件包部署署到J2EE應用服務器器上27部署描述符提供容器如何何管理和控制制J2EE組組件行為的操操作指令事務性安全性持久性通過配置實現(xiàn)現(xiàn)組件行為的的定制(不不需要通過代代碼進行定制制)XML文件使代碼具有可可移植性2829應用服務器介介紹應用服務器是是非常重要的的企業(yè)軟件,,為現(xiàn)代業(yè)務務系統(tǒng)提供了了應用基礎結結構。應用服務器源源自支持與其其它系統(tǒng)共享享數據和資源源的應用,以以及為Web頁面和其其它用戶界面面生成動態(tài)信信息的需求。。它在在Web服服務務器器與與底底層層應應用用和和數數據據庫庫之之間間形形成成了了新新的的功功能能和和服服務務層層30應用服務務器實現(xiàn)現(xiàn)的功能能負載均衡衡故障容錯錯Web服服務網絡透明明遺留集成成事務管理理安全性消息多線程持久性數據庫連連接資源合并并開發(fā)、測測試和封封裝功能能……31J2EEContainers&Components32容器與組組件容器處理理組件處理理一致性安全性可獲得性性可伸縮性性事務性分布性生命周期期管理(持久性性)表示JSP,Servlet,Applet業(yè)務邏輯EJB數據訪問邏輯輯EJB應用系統(tǒng)訪問問Webservice33應用服務器器產品BEAWebLogicIBMWebSphereSunJavaSystemApplicationServerOracle9i/ASJBossTomcat(不支支持EJB)Resin34Web服務務器模型/CGI/ServletWeb服務務器模型CGI/ServletServersidemoduleisapimod_perlServersidescriptphpaspjsp35ServletServlet是Java技技術對CGI編程的的回答。Servlet程序序在服務器器端運行,,動態(tài)地生生成Web頁面。與與傳統(tǒng)的CGI和許許多其他類類似CGI的技術相相比,JavaServlet具有有更高的效效率,更容容易使用,,功能更強強大,具有有更好的可可移植性,,更節(jié)省投投資。高效方便可移植性好好節(jié)省投資36Servlet開發(fā)發(fā)如果某個類類要成為Servlet,則則它應該從從HttpServlet繼繼承,根根據數數據是通過過GET還還是POST發(fā)送,,重載doGet、、doPost方法法之一或全全部。doGet和doPost方方法都有兩兩個參數,,分別為HttpServletRequest類型型和HttpServletResponse類型。。HttpServletRequest提供訪訪問有關請請求的信息息的方法,,例如表單單數據、HTTP請請求頭等等等。HttpServletResponse除了了提供用于于指定HTTP應答答狀態(tài)(200,404等))、應答頭頭(Content-Type,Set-Cookie等)的方方法之外,,最重要的的是它提供供了一個用用于向客戶戶端發(fā)送數數據的PrintWriter。對于簡單的的Servlet來來說,它的的大部分工工作是通過過println語語句生成向向客戶端發(fā)發(fā)送的頁面面。必須導入java.io包((要用到PrintWriter等類類)、javax.servlet包包(要用到到HttpServlet等等類)以及及javax.servlet.http包((要用到HttpServletRequest類和HttpServletResponse類))。doGet和doPost這這兩個方法法是由service方法調調用的,有有時你可能能需要直接接重載service方法,,比如Servlet要處理理GET和和POST兩種請求求時37JSPTechnologyJavaServerPages((JSP))是一種實實現(xiàn)普通靜靜態(tài)HTML和動態(tài)態(tài)HTML混合編碼碼的技術。。JSP并沒沒有增加任任何本質上上不能用Servlet實現(xiàn)現(xiàn)的功能。。但是,在在JSP中中編寫靜態(tài)態(tài)HTML更加方便便,不必再再用println語句來來輸出每一一行HTML代碼。。更重要的的是,借助助內容和外外觀的分離離,頁面制制作中不同同性質的任任務可以方方便地分開開:比如,,由頁面設設計專家進進行HTML設計,,同時留出出供Servlet程序員插插入動態(tài)內內容的空間間。JSP一般般在Web服務器端端被編譯成成Servlet后后執(zhí)行通過定制的的Tag實實現(xiàn)擴展38JSPConstructs1JSP文件件有固定的的文件名后后綴.jsp注釋<%--注注釋--%>Declaration<%!intx=0;%>Expression<%=expression%>向Response流中輸出出數據類似于在瀏瀏覽器中執(zhí)執(zhí)行print在表達式語語句后面不不能有分號號Scriplets–包包含java代碼<%代碼碼片段%>39JSPConstructs2<%if(value.getName().length!=0){%><H2>Thevalueis:<%=value.getName()%></H2><%}else{%><H2>Valueisempty</H2><%}%>所有JSP頁面中都都隱含存在在幾個固有有的對象“request””–Browser’sRequestObjectUsetogetHTTPheaders,lengthetc..“response”-HttpResponseObject40JSPConstructs3“session””–internalHttpSessionObject“pageContext””“application””“out””,sameas<%=%>“config”––servletconfiguration“page”“exception”JSPDirectives是針對JSP的指示示41JSPConstructs4不會產生任任何輸出“page”directive<%@pageimport=““java.io.*”%>通常用來引引入java類的路路徑“include””directive<%@includefile=“header.htm””%>用來包含一一些靜態(tài)文文件“taglib”––列出出標簽庫描描述文件的的位置在使用特定定標簽庫的的時候需要要42在Web應應用中使用用JavaBeans一般用來實實現(xiàn)數據傳傳遞和業(yè)務務組件與JavaBeans在Swing和AWT中的用法法相似必須沒有構構造函數或或者構造函函數沒有參參數每個Bean屬性都都必須有setter和getter方法JSP標簽簽也使用JavaBean43JSPActionsJSPactions是一一些會影響響輸出流的的特殊標簽簽,通常用用在JavaBean上常用的JSPaction<jsp:useBean>,<jsp:getProperty>,<jsp:setProperty>以下代碼用用來在輸出出流中顯示示studentbean的lastName屬性<jsp:useBeanid="student"scope="request"class="StudentValue"/><jsp:getPropertyname="student"property="lastName"/>44JDBC提供訪問關關系型數據據庫的標準準JavaAPI使用SQL對于Java編程API的實實現(xiàn)由各廠廠商實現(xiàn),,針對不同同數據庫編編寫不同的的驅動程序序。45JDBC的的目標SQL-Level100%純純Java簡單高效利用現(xiàn)有有的數據據庫技術術提供多種種方法簡簡化不同同功能需需求的代代碼46JDBC體系系架構ApplicationJDBCDriverJava代碼碼調用JDBC庫JDBC裝載驅驅動驅動與特特定數據據庫連接接可以使用用多個驅驅動,也也可以使使用多個個數據庫庫可以在不不修改程程序代碼碼的情況況下更換換要使用用的數據據庫47JDBCDriversTypeI:“Bridge””TypeII:““Native”TypeIII:““Middleware””TypeIV:““Pure”48JDBCAPIJDBC的實實現(xiàn)類在在java.sql包包中,需需要在程程序中通通過import語句句引入49DriverManagerDriverManager試用用各種驅動使用第一個可可以正確使用用的驅動一個驅動類裝裝載時,自動動在DriverManager中中注冊Class.forName(“org.gjt.mm.mysql.Driver”);Connectionc=DriverManager.getConnection(...);50JDBC對象象類DriverManager裝載載、、選選擇擇驅驅動動Driver連接接實實際際數數據據庫庫Connection連接接數數據據庫庫的的對對象象Statement執(zhí)行行獨獨立立的的SQL語語句句ResultSetStatement返返回回的的結結果果集集51JDBC類類的的使使用用DriverManagerDriverConnectionStatementResultSet52JDBCURLjdbc:subprotocol:source不同的驅動有有不同的URL寫法jdbc:odbc:DataSource例如jdbc:odbc:Northwindjdbc:mysql://host[:port]/database例如jdbc:mysql://localhost/accounting53DriverManagerConnectiongetConnection(Stringurl,Stringuser,Stringpassword)與給定的JDBCURL連接,并并使用user和password參數可能產產生java.sql.SQLException返回一一個Connection對象象54ConnectionConnection對對象表表示和和一個個特定定數據據的連連接會會話SQL語句句在Connection環(huán)環(huán)境里里執(zhí)行行并得得到返返回結結果可以創(chuàng)創(chuàng)建到到一個個數據據庫的的多個個Connection連接接在Connection中有有一些些方法法能夠夠得到到數據據庫的的metadata信息息,如如數據據庫中中表結結構和和字段段屬性性在Connection還有有保證證數據據庫事事務的的方法法55獲得一一個ConnectionStringurl=““jdbc:mysql://localhost/test";try{Class.forName("org.gjt.mm.mysql.Driver");Connectioncon=DriverManager.getConnection(url,”root””,””root”);}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}56StatementStatement對對象象用用來來執(zhí)執(zhí)行行SQL命命令令并并獲獲取取相相應應的的結結果果Statement對對象象的的主主要要方方法法ResultSetexecuteQuery(String)ExecuteaSQLstatementthatreturnsasingleResultSexecuteUpdate(String)ExecuteaSQLINSERT,UPDATEorDELETEstatement.Returnsthenumberofrowschanged.booleanexecute(String)ExecuteaSQLstatementthatmayreturnmultipleresults.57ResultSetResultSet用用來來訪訪問問Statement對對象象執(zhí)執(zhí)行行后后得得到到的的數數據據結結果果集集每個Statement每次只能打打開一個ResultSet數據庫表中的的記錄按順序序獲取ResultSet對象象維護一個指指向當前記錄錄的游標Next方法法把游標指向向下一個記錄錄新的JDBC中允許游標標指向上一個個記錄,有部部分支持高版版本JDBC規(guī)范的驅動動程序可以支支持這個功能能58JDBC類圖圖59EnterpriseJavaBeans(EJB)是是:Java服務務器端服務框框架的規(guī)范,,軟件廠商根根據它來實現(xiàn)現(xiàn)EJB服務務器。應用程程序開發(fā)者可可以專注于支支持應用所需需的商業(yè)邏輯輯,而不用擔擔心周圍框架架的實現(xiàn)問題題。EJB容器是是:一個管理一個個或多個EJB類/實例例的抽象。它它通過規(guī)范中中定義的接口口使EJB類類訪問所需的的服務。容器器廠商也可以以在容器或服服務器中提供供額外服務的的接口。EJB服務器器是:管理EJB容容器的高端進進程或應用程程序,并提供供對系統(tǒng)服務務的訪問。EJB服務器器也可以提供供廠商自己的的特性,如優(yōu)優(yōu)化的數據庫庫訪問接口,,對其他服務務(如CORBA服務))的訪問。一一個EJB服服務器必須提提供對可訪問問JNDI的的名字服務和和事務服務支支持。什么是EJB60EJB架構61EnterpriseJavaBeans有有三種類型:EntityBeans代表數據在服務器重啟啟后仍然存在在可以通過EJBcontainer(“CMP”)或或者程序(“BMP”)持續(xù)續(xù)化到數據庫庫SessionBeans執(zhí)行動作等價于‘一般般’的Javaobject,只不過是是在遠程可以是stateless(是是原子操作),或stateful(在在一個context中執(zhí)行一系系列的操作)MessageDrivenBeanEJB介紹62EnterpriseJavaBeans63EJB介紹EJB服務器器和容器64EJB介紹EJB容器的的責任65業(yè)務數據模型型對業(yè)務概念的的反映,也稱稱為領域類((domainclass)在持久存儲中中業(yè)務實體的的對象視圖提供訪問和操操作數據的對對象封裝支持多用戶共共享的數據可以從數據庫庫中存儲的屬屬性重新實例例化EJB服務務器崩潰后仍仍可重構與數據庫中的的數據有一樣樣長的生命EJB介紹實體bean(EntityBean)66Bean-ManagedPersistence(自自管理的持久久性)優(yōu)點:開發(fā)者有完全全的控制無需復雜的提提供商支持缺點:編碼復雜在在改變時需要要重新編碼和和部署影響可移植性性Container-ManagedPersistence(容容器管理的持持久性)優(yōu)點點::提供供商商解解決決,,可可能能會會有有更更好好的的緩緩沖沖和和性性能能在部部署署描描述述符符中中進進行行改改變變即即可可可可移移植植性性好好缺點點::對容容器器提提供供商商的的工工具具依依賴賴性性強強可能能不不易易反反映映復復雜雜的的數數據據關關系系EJB介介紹紹實體體bean的的持持久久性性67會話話bean經經常常用用于于涉涉及及多多個個實實體體bean的的業(yè)業(yè)務務處處理理和和控控制制邏邏輯輯SessionEntityEntityEntityEJB介介紹紹會話話bean(SessionBean)(1)68相對對生生命命較較短短((一一般般與與客客戶戶同同步步))在EJB服服務務器器崩崩潰潰時時被被刪刪除除不表表示示數數據據庫庫中中的的數數據據,,但但可可以以訪訪問問數數據據作為為一一個個客客戶戶的的代代表表執(zhí)執(zhí)行行功功能能可以以加加入入事事務務EJB介介紹紹會話話bean(SessionBean)(2)69使用用會會話話bean對對針針對對于于某某一一客客戶戶的的處處理理或或控控制制對對象象建建模模對工工作作流流、、任任務務和和管管理理活活動動等等建建模模((如如訂訂房房、、購購物物車車等等))協(xié)調調多多個個實實體體bean,,控控制制實實體體bean之之間間的的交交互互將業(yè)業(yè)務務應應用用邏邏輯輯從從客客戶戶端端轉轉移移到到服服務務器器端端EJB介介紹紹何時時使使用用會會話話Bean70會話話bean表示示一一個個業(yè)業(yè)務務過過程程每一一客客戶戶一一個個實實例例Short-lived::與與客客戶戶生生命命同同步步暫態(tài)態(tài)的的服務務器器崩崩潰潰后后丟丟失失可以以是是事事務務性性的的實體體bean表示示業(yè)業(yè)務務數數據據在多多個個客客戶戶間間共共享享實實例例Long-lived::與與數數據據庫庫中中數數據據同同步步持久久的的服務務器器崩崩潰潰后后可可重重構構總是是事事務務性性的的EJB介介紹紹會話話Bean??實實體體Bean??71無狀狀態(tài)態(tài)((Stateless))bean表達達一一個個無無狀狀態(tài)態(tài)的的服服務務((如如列列表表,,mail))不存存儲儲用用戶戶相相關關信信息息,,進進行行對對請請求求的的響響應應暫態(tài)態(tài)的的可用用來來構構造造響響應應頻頻繁繁而而簡簡單單的的訪訪問問的的bean池池有狀狀態(tài)態(tài)((Stateful))bean維護護客客戶戶狀狀態(tài)態(tài)EJB介介紹紹兩種種類類型型的的會會話話bean72JNDIJavaNamingandDirectoryInterfaceJ2EE應用用利用JNDI來定位資資源和對象,,使軟件更容容易移植應用程序通過過JNDI用用符號名稱查查找關聯(lián)資源源的對象符號名稱和對對象之間的關關聯(lián)由系統(tǒng)管管理人員在應應用程序部署署時配置JNDI的使使用InitialContextic=newInitialContext()ic.lookup(““resourcename”)73J2EEWeb目錄結結構頂層目錄通常常是上下文路路徑如:應用目錄錄/tomcat/webapps/servletdemo通常情況下URL應為http://localhost:8080/servletdemo包含JSP、、其他靜態(tài)內內容和WEB-INF目目錄/WEB-INF目錄這是一個受保保護的目錄,,不能瀏覽這這個目錄下的的文件/classes–未未打包的java類,,會自動加到到CLASS_PATH中/lib––web應應用中的jar文件74Web應用部部署結構ProjectFolderWEB-INFclassespackage1package2libJSPfilesHTMLfilespicturesweb.xmlDeploymentdescriptor75部署結構說明明*.html,*.jsp等Html、jsp和其他他需要被客戶戶端訪問的文文件WEB-INF/web.xmlWeb應用部部署描述符WEB-INF/classes編譯后的java類文件件(包括servlet和非servlet)WEB-INF/libWeb應用需需要的JAR文件,包括括JDBC驅驅動程序等第第三方模塊76Web部署署描述符/WEB-INF/web.xmlJ2EE標準準的一部分定義一個web應用中的的servlet給servlet和URL之間作映映射一個servlet可以以映射到多個個URL上定義web應應用中可以使使用的資源定義安全定義其他內容容設定Welcomefile列表表設定會話超時時錯誤頁面映射射77Web應用打打包(WAR)J2EE規(guī)范范定義了如何何把一個web應用歸檔檔成一個webapplicationarchive(WAR)WAR文件后綴為.war的Java歸檔文件件用zip格式式打包符合J2EE規(guī)范的應用用服務器都可可以正確識別別WAR文件直直接部署在Tomcat等應用服務務器上78J2EE應應用結構EJBsWebcomponentEJBDDEJBclassRemoteclassHomeclassWebDDJSPfilesServletClassPictures(GIF/JPG)HTMLfilesJ2EEApplicationJ2EEDD.warfile.earfile.jarfile79J2EE標標準部署描描述符EnterpriseArchive(ear)fileApplication.xml在META-INF目目錄下JavaArchive(jar)fileejb-jar.xml在META-INF目目錄下WebArchive(war)fileweb.xml在WEB-INF目錄錄下80J2EE設設計模式(JSP為為中心)優(yōu)點非常容易結結合業(yè)務邏邏輯(JSP:UseBean)、服服務器處理理過程和HTML(<html>),,在JSP頁面中同同時實現(xiàn)顯顯示、業(yè)務務邏輯和流流程控制,,從而快速速完成應用用開發(fā)缺點應用的實現(xiàn)現(xiàn)一般是基基于過程的的,一組JSP頁面面完成一個個業(yè)務流程程,如果要要進行改動動,必須在在多個地方方進行修改改。這樣非非常不利于于應用擴展展和更新。。由于應用不不是建立在在模塊上,,業(yè)務邏輯輯和表示邏邏輯混合在在JSP頁頁面中,沒沒有進行抽抽象和分離離。不利于于應用系統(tǒng)統(tǒng)業(yè)務的重重用和改動動。81J2EE設設計模式(MVC框框架)表示與邏輯輯分開View––表示示:顯示輸輸入輸出數數據(可可以是HTML,,jsp,,也可以是是一個windows應應用)Model–業(yè)業(yè)務邏輯和和數據:基基于輸入和和定義的業(yè)業(yè)務流程執(zhí)執(zhí)行計算或或其它操操作(javabeanorejb)Controller–協(xié)協(xié)調view和和model,在在它們之間間交換數據據(actionorservlet)databasesViewControllerModel82J2EE設設計模式MVC的的隱含式J2EE實現(xiàn)View由由JSP和HTML頁面組組成Servlet可可以同時是是controller和和model直接存取數數據MVC實實現(xiàn)方法183J2EE設設計模式將業(yè)務邏輯輯處理放在在Servlet之外HttpServlet的的子類應該該僅做servlet份份內的工作作管理request、response及及HttpSession對象將業(yè)務邏輯輯寫在傳統(tǒng)統(tǒng)的Java類僅傳送普普通的Java類類,不是是servlet相相關的的類(例例如request,response或或session))比servlet容易開發(fā)發(fā)、測試試和重用用MVC實實現(xiàn)方方法2databaseJSPsservletsobjects84典型的J2EE方方案View由JSP和和靜態(tài)態(tài)HTML組組成Controller是servletModel是是EJB很象使用用傳統(tǒng)的的Java對對象––只只是運行行在遠程程J2EE設計模模式MVC實實現(xiàn)方方法3databasesJSPsservletsEJBs85典型的Struts方方案View由JSP和和靜態(tài)態(tài)HTML組組成Controller是StrutsModel是是EJB或javabeanJ2EE設計模模式MVC實實現(xiàn)方方法4databasesJSPsstrutsEJBsJavaBean86應用實例例SunBlueprintPetStoremyPetStore-EJBversionJPetStore––struts+iBatis87大多數J2EE應用共共享許多多任務:日志,數數據庫庫存取,數據據校驗,屬性性管理,異常常操作,生成成HTML…不要在每每一個項項目中重重寫這些些不要在同同一個項項目用不不同的方方法做這這些!一個““framework”設設定通用用的方式式去做這這些工作作–通通過重重用代碼碼(和和技能!)可能是內內部框架架(通通過以前前的項目目)可能是外外部框架架(e.g.JADE)技巧使用框架架88可以被緩緩存并可可以被所所有用戶戶共享InitialContextobjectJNDIEJBHomeinterfaces所有用用戶都都一樣樣可以被被單獨獨的用用戶緩緩存Databaseresultsets例如,,當你你一次次只顯顯示部部分數數據時時,緩緩存查查詢結結果可以在在servlet中中緩存存,可可以以在sessionbean中中緩存存技巧盡可能能緩存存對象象89init()做做盡可可能多多的工工作只在初初始化化是執(zhí)執(zhí)行一一次盡可能能少地地使用用Synchronize確保不不要synchronize整整個個類不要用用任何何實例例變量量將被所所有在在線的的用戶戶使用用不要使使用SingleThreadModel雖然是是thread-safe,但但性性能太太差……對于非非Java群群體體:不不要要在cookies中中存存對象象使用HttpSession代替技巧Servlet技技巧90保持盡盡量少少的Java代代碼JSP中的的Java代碼碼很難難維護護和測測試絕對不不要將將業(yè)務務邏輯輯放在在JSP中中編寫h
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 雙減政策視角下課外輔導的心得體會
- 教導隊職業(yè)素養(yǎng)集訓總結范文
- 小學乒乓球社團師生互動計劃
- 外匯見證業(yè)務管理辦法
- 體育賽事組織質量、進度、安全保證措施
- 矛盾糾紛網格管理辦法
- 各省財政票據管理辦法
- 食品配送服務質量保障措施
- 客運企業(yè)獎罰管理辦法
- 房產居間合同管理辦法
- DB23T 1318-2020 黑龍江省建設施工現(xiàn)場安全生產標準化實施標準
- 2018年上海高考歷史試題及答案
- 醫(yī)療器械直調管理制度
- 中儲糧內控管理地圖手冊
- 新加坡公司法-英文版
- 醫(yī)院管理腎內科腹膜透析護理常規(guī)
- 自動控制原理浮球液位控制系統(tǒng)課程設計
- 離婚一方財產轉移
- 鐵塔組立施工合同
- 隧道施工安全技術教育培訓記錄(共19頁)
- (完整版)四川建龍軟件全套表格
評論
0/150
提交評論