




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課程內(nèi)容n概述nJ2EE架構(gòu)基礎(chǔ)nServlet、JSP、EJB開發(fā)nJ2EE應(yīng)用部署nJ2EE應(yīng)用開發(fā)架構(gòu)n實(shí)例軟件開發(fā)技術(shù)的發(fā)展n基于主機(jī)的系統(tǒng)n兩層的Client/Server系統(tǒng)n三層(n層)體系架構(gòu)q表示層q業(yè)務(wù)邏輯層q數(shù)據(jù)層n基于Web的三層(n層)體系架構(gòu)中間件技術(shù)中間件技術(shù)中間件技術(shù)企業(yè)級(jí)應(yīng)用的要求n分布式n可移植n面向Web體系n滿足企業(yè)計(jì)算要求q一致性q事務(wù)性q安全性n好的特性q可伸縮q可擴(kuò)展q易維護(hù)n遺留系統(tǒng)集成以上要求需要一個(gè)良好的基礎(chǔ)架構(gòu)來支持企業(yè)級(jí)應(yīng)用環(huán)境什么是J2EE?Java 2 Platform, Enterprise Edition (J2EE)nOpen
2、and standard based platform for developing, deploying and managing n-tier, Web-enabled, server-centric, and component-based enterprise applicationsn運(yùn)用Java技術(shù)開發(fā)企業(yè)應(yīng)用的標(biāo)準(zhǔn)n包括了q多層應(yīng)用開發(fā)模型q開發(fā)平臺(tái) - APIs 和服務(wù)q測試軟件包 q參考實(shí)現(xiàn)n將所有Sun的企業(yè)技術(shù)集合在一個(gè)體系結(jié)構(gòu)下的平臺(tái)q特定版本下的EJB, Servlet, JSPqJava Web Server qJNDI, JDBC, JTA, JMS, JavaM
3、ail, CORBAJava 2 PlatformJ2EE可以提供什么n分布式、可移植構(gòu)件的框架n簡化服務(wù)器端中間層構(gòu)件的設(shè)計(jì)n為構(gòu)件和應(yīng)用服務(wù)器提供標(biāo)準(zhǔn)APIJ2EE可以為開發(fā)者和用戶帶來n更短的開發(fā)時(shí)間q可重用組件qJSPqEJBn自由的選擇q基于開放的標(biāo)準(zhǔn)n簡化的連接qXML,JDBC,RMI-IIOP,Web ServiceJ2EE 技術(shù)架構(gòu)J2EE 應(yīng)用體系結(jié)構(gòu)J2EE是端到端的解決方案N層J2EE體系架構(gòu)J2EE主要技術(shù)概覽n展示層 ServLet/JSPn中間層 EJBn中間層可用的企業(yè)服務(wù)q事務(wù)服務(wù) JTAq目錄服務(wù) JNDIq消息服務(wù) JMSq異步組件Message-Driv
4、en EJBn數(shù)據(jù)層 - JDBCn遠(yuǎn)程調(diào)用 RMI/IIOPn使用現(xiàn)有資源 - JCAJ2EE 1.4 Contents.Net與J2EE 的比較Web 架構(gòu): J2EE vs .NETCLR.NET AssemblyADO.NET(可使用 COM+ 服務(wù); 比如事務(wù))Web 表單Server 控件Code-BehindASP.NETIISJavaBeansEJBsJSPServlets可運(yùn)行于大多數(shù)主要應(yīng)用及Web服務(wù)器支持大多數(shù)數(shù)據(jù)庫 (通過 JDBC 驅(qū)動(dòng)程序)J2SE/EEJDBC (事務(wù)使用 JTA).NETSQL ServerOracleDB/2, etc.SQL ServerO
5、racleDB/2, etc.狀態(tài): ASP.NET Session,.NET 數(shù)據(jù)緩存狀態(tài): 封裝于 EJB 中, 也可在 Web Sessions 中J2EE/.NET主要技術(shù)比較nJDBC nJTAnJNDInJMSnJavaMailnRMI/IIOPnJAFnADO.NET n.NET TransactionnActive Directoryn.NET MessagingnSmtpMailnWeb Service/Remotingn.NET JIT技術(shù)的成熟性MicrosoftJ2EE199619971998199920002001MSXMLJAXPASPJSPMTS/COM+EJBO
6、DBCJDBCMar 1992ADSIJNDIQCMDBLCEMMCWinDNAJ2EEMSMQJMSVS.Net.NetJ2EE的移植性與互操作性n理論上J2EE應(yīng)用可以采用多個(gè)廠商的產(chǎn)品q只要符合J2EE的標(biāo)準(zhǔn)n實(shí)際情況qJ2EE標(biāo)準(zhǔn)不完整,如 Web ServiceqJ2EE的技術(shù)需改進(jìn),如 EJBq各廠商發(fā)展各自的技術(shù)q不同產(chǎn)品很難協(xié)同和移植nJ2EE可選擇同一廠商支持的不同操作系統(tǒng).Net的移植性與互操作性n理論上.Net應(yīng)用可移植到任何平臺(tái)qCLS提交給標(biāo)準(zhǔn)化組織q只要支持CLRn實(shí)際情況q只有Windows/Free BSDn.Net支持Web Serviceq可以使用任何平臺(tái)運(yùn)
7、行的Web Serviceq任何平臺(tái)可使用.Net Web Service技術(shù)比較結(jié)論n.Net和J2EE應(yīng)用有著相似的架構(gòu)n.Net和J2EE有相應(yīng)的主要技術(shù)q.Net所有技術(shù)來自MicrosoftqJ2EE的技術(shù)有多個(gè)廠商的實(shí)現(xiàn)n.Net和J2EE可以滿足大多數(shù)應(yīng)用的需求n主要的差別不在技術(shù)的可行性上q開發(fā)效率q性能q成本q穩(wěn)定性開發(fā)工具nJBuilderq商用q功能完備nEclipseqOpen Sourceq插件豐富qmyEclipsen版本管理qCVSJ2EE 應(yīng)用開發(fā)n編寫和編譯組件代碼qServlet, JSP, EJBn編寫組件的部署描述符n把組件裝配成可部署的軟件包n將軟件包
8、部署到J2EE應(yīng)用服務(wù)器上 部署描述符n提供容器如何管理和控制J2EE組件行為的操作指令q事務(wù)性q安全性q持久性n通過配置實(shí)現(xiàn)組件行為的定制 (不需要通過代碼進(jìn)行定制)qXML文件n使代碼具有可移植性應(yīng)用服務(wù)器介紹n應(yīng)用服務(wù)器是非常重要的企業(yè)軟件,為現(xiàn)代業(yè)務(wù)系統(tǒng)提供了應(yīng)用基礎(chǔ)結(jié)構(gòu)。n應(yīng)用服務(wù)器源自支持與其它系統(tǒng)共享數(shù)據(jù)和資源的應(yīng)用,以及為Web 頁面和其它用戶界面生成動(dòng)態(tài)信息的需求。n它在 Web 服務(wù)器與底層應(yīng)用和數(shù)據(jù)庫之間形成了新的功能和服務(wù)層應(yīng)用服務(wù)器實(shí)現(xiàn)的功能n負(fù)載均衡n故障容錯(cuò)nWeb 服務(wù)n網(wǎng)絡(luò)透明n遺留集成n事務(wù)管理n安全性n消息n多線程n持久性n數(shù)據(jù)庫連接n資源合并n開發(fā)、測試
9、和封裝功能n J2EE Containers & Components容器與組件容器處理容器處理組件處理組件處理 一致性一致性 安全性安全性 可獲得性可獲得性 可伸縮性可伸縮性 事務(wù)性事務(wù)性 分布性分布性 生命周期管生命周期管理理 (持久性)(持久性)表示表示JSP, Servlet, Applet業(yè)務(wù)邏輯業(yè)務(wù)邏輯EJB數(shù)據(jù)訪問邏輯數(shù)據(jù)訪問邏輯EJB應(yīng)用系統(tǒng)訪問應(yīng)用系統(tǒng)訪問Web service應(yīng)用服務(wù)器產(chǎn)品nBEA WebLogicnIBM WebSpherenSun Java System Application ServernOracle 9i/ASnJBossnTomcat(不支持EJ
10、B)nResinWeb服務(wù)器模型/CGI/ServletnWeb服務(wù)器模型nCGI/ServletnServer side moduleqisapiqmod_perlnServer side scriptqphpqaspqjspServletnServlet是Java技術(shù)對(duì)CGI編程的回答。Servlet程序在服務(wù)器端運(yùn)行,動(dòng)態(tài)地生成Web頁面。與傳統(tǒng)的CGI和許多其他類似CGI的技術(shù)相比,Java Servlet具有更高的效率,更容易使用,功能更強(qiáng)大,具有更好的可移植性,更節(jié)省投資。 q高效 q方便 q可移植性好 q節(jié)省投資Servlet開發(fā)n如果某個(gè)類要成為Servlet,則它應(yīng)該從Htt
11、pServlet 繼承, 根據(jù)數(shù)據(jù)是通過GET還是POST發(fā)送,重載doGet、doPost方法之一或全部。 doGet和doPost方法都有兩個(gè)參數(shù),分別為HttpServletRequest 類型和HttpServletResponse 類型。 nHttpServletRequest提供訪問有關(guān)請(qǐng)求的信息的方法,例如表單數(shù)據(jù)、HTTP請(qǐng)求頭等等。 nHttpServletResponse除了提供用于指定HTTP應(yīng)答狀態(tài)(200,404等)、應(yīng)答頭(Content-Type,Set-Cookie等)的方法之外,最重要的是它提供了一個(gè)用于向客戶端發(fā)送數(shù)據(jù)的PrintWriter 。 n對(duì)于簡單
12、的Servlet來說,它的大部分工作是通過println語句生成向客戶端發(fā)送的頁面。 n必須導(dǎo)入java.io包(要用到PrintWriter等類)、javax.servlet包(要用到HttpServlet等類)以及javax.servlet.http包(要用到HttpServletRequest類和HttpServletResponse類)。 ndoGet和doPost這兩個(gè)方法是由service方法調(diào)用的,有時(shí)你可能需要直接重載service方法,比如Servlet要處理GET和POST兩種請(qǐng)求時(shí)JSP TechnologynJavaServer Pages(JSP)是一種實(shí)現(xiàn)普通靜態(tài)H
13、TML和動(dòng)態(tài)HTML混合編碼的技術(shù)。nJSP并沒有增加任何本質(zhì)上不能用Servlet實(shí)現(xiàn)的功能。但是,在JSP中編寫靜態(tài)HTML更加方便,不必再用 println語句來輸出每一行HTML代碼。更重要的是,借助內(nèi)容和外觀的分離,頁面制作中不同性質(zhì)的任務(wù)可以方便地分開:比如,由頁面設(shè)計(jì)專家進(jìn)行HTML設(shè)計(jì),同時(shí)留出供Servlet程序員插入動(dòng)態(tài)內(nèi)容的空間。 nJSP一般在Web服務(wù)器端被編譯成Servlet后執(zhí)行n通過定制的Tag實(shí)現(xiàn)擴(kuò)展JSP Constructs 1nJSP文件有固定的文件名后綴.jspn注釋 nDeclaration nExpression q向Response流中輸出數(shù)據(jù)q
14、類似于在瀏覽器中執(zhí)行printq在表達(dá)式語句后面不能有分號(hào)nScriplets 包含java代碼 qJSP Constructs 2The value is: Value is emptyn所有JSP頁面中都隱含存在幾個(gè)固有的對(duì)象q“request” Browsers Request ObjectnUse to get HTTP headers, length etc.q“response” - HttpResponse ObjectJSP Constructs 3q“session” internal HttpSession Objectq“pageContext” q“applicatio
15、n”q“out”, same as q“config” servlet configurationq“page”q“exception”nJSP Directivesq是針對(duì)JSP的指示JSP Constructs 4q不會(huì)產(chǎn)生任何輸出q“page” directive nn通常用來引入java類的路徑q“include” directivenn用來包含一些靜態(tài)文件q“taglib” 列出標(biāo)簽庫描述文件的位置n在使用特定標(biāo)簽庫的時(shí)候需要在Web應(yīng)用中使用Java Beansn一般用來實(shí)現(xiàn)數(shù)據(jù)傳遞和業(yè)務(wù)組件n與Java Beans在Swing和AWT中的用法相似n必須沒有構(gòu)造函數(shù)或者構(gòu)造函數(shù)沒有
16、參數(shù)n每個(gè)Bean屬性都必須有setter和getter方法nJSP標(biāo)簽也使用Java BeanJSP ActionsnJSP actions是一些會(huì)影響輸出流的特殊標(biāo)簽,通常用在Java Bean上q常用的JSP actionn , , n以下代碼用來在輸出流中顯示student bean的lastName屬性JDBCn提供訪問關(guān)系型數(shù)據(jù)庫的標(biāo)準(zhǔn)Java APIq使用SQLn對(duì)于Java編程API的實(shí)現(xiàn)由各廠商實(shí)現(xiàn),針對(duì)不同數(shù)據(jù)庫編寫不同的驅(qū)動(dòng)程序。JDBC 的目標(biāo)nSQL-Leveln100% 純Javan簡單n高效n利用現(xiàn)有的數(shù)據(jù)庫技術(shù)n提供多種方法簡化不同功能需求的代碼JDBC 體系架
17、構(gòu)ApplicationJDBCDrivernJava 代碼調(diào)用JDBC庫nJDBC裝載驅(qū)動(dòng)n驅(qū)動(dòng)與特定數(shù)據(jù)庫連接n可以使用多個(gè)驅(qū)動(dòng),也可以使用多個(gè)數(shù)據(jù)庫n可以在不修改程序代碼的情況下更換要使用的數(shù)據(jù)庫JDBC DriversnType I: “Bridge”nType II: “Native”nType III: “Middleware”nType IV: “Pure”JDBC APInJDBC 的實(shí)現(xiàn)類在java.sql包中,需要在程序中通過import語句引入DriverManagernDriverManager 試用各種驅(qū)動(dòng)n使用第一個(gè)可以正確使用的驅(qū)動(dòng)n一個(gè)驅(qū)動(dòng)類裝載時(shí),自動(dòng)在Dri
18、verManager中注冊(cè)Class.forName(“org.gjt.mm.mysql.Driver”);Connection c = DriverManager.getConnection(.);JDBC對(duì)象類nDriverManagerq裝載、選擇驅(qū)動(dòng)nDriverq連接實(shí)際數(shù)據(jù)庫nConnectionq連接數(shù)據(jù)庫的對(duì)象nStatementq執(zhí)行獨(dú)立的SQL語句nResultSetqStatement返回的結(jié)果集JDBC 類的使用DriverManagerDriverConnectionStatementResultSetJDBC URLnjdbc:subprotocol:sourcen
19、不同的驅(qū)動(dòng)有不同的URL寫法njdbc:odbc:DataSourceq例如jdbc:odbc:Northwindnjdbc:mysql:/host:port/databaseq例如jdbc:mysql:/localhost/accountingDriverManagernConnection getConnectionn(String url, String user, String password)n與給定的JDBC URL連接,并使用user和password參數(shù)n可能產(chǎn)生java.sql.SQLExceptionn返回一個(gè) Connection對(duì)象ConnectionnConnect
20、ion對(duì)象表示和一個(gè)特定數(shù)據(jù)的連接會(huì)話nSQL語句在Connection環(huán)境里執(zhí)行并得到返回結(jié)果n可以創(chuàng)建到一個(gè)數(shù)據(jù)庫的多個(gè)Connection連接n在Connection中有一些方法能夠得到數(shù)據(jù)庫的metadata信息,如數(shù)據(jù)庫中表結(jié)構(gòu)和字段屬性n在Connection還有保證數(shù)據(jù)庫事務(wù)的方法獲得一個(gè) ConnectionnString url = “jdbc:mysql:/localhost/test;ntry nClass.forName ( org.gjt.mm.mysql.Driver );nConnection con = DriverManager.getConnection(u
21、rl,”root”,”root”);nncatch (ClassNotFoundException e) n e.printStackTrace(); ncatch (SQLException e)n e.printStackTrace(); StatementnStatement對(duì)象用來執(zhí)行SQL命令并獲取相應(yīng)的結(jié)果nStatement對(duì)象的主要方法qResultSet executeQuery(String) nExecute a SQL statement that returns a single ResultSet. qint executeUpdate(String) nExecu
22、te a SQL INSERT, UPDATE or DELETE statement. Returns the number of rows changed.qboolean execute(String) nExecute a SQL statement that may return multiple results. ResultSetnResultSet用來訪問Statement對(duì)象執(zhí)行后得到的數(shù)據(jù)結(jié)果集n每個(gè)Statement每次只能打開一個(gè)ResultSetn數(shù)據(jù)庫表中的記錄按順序獲取nResultSet對(duì)象維護(hù)一個(gè)指向當(dāng)前記錄的游標(biāo)nNext方法把游標(biāo)指向下一個(gè)記錄 q新的JD
23、BC中允許游標(biāo)指向上一個(gè)記錄,有部分支持高版本JDBC規(guī)范的驅(qū)動(dòng)程序可以支持這個(gè)功能JDBC類圖nEnterprise JavaBeans(EJB) 是: Java服務(wù)器端服務(wù)框架的規(guī)范,軟件廠商根據(jù)它來實(shí)現(xiàn)EJB服務(wù)器。應(yīng)用程序開發(fā)者可以專注于支持應(yīng)用所需的商業(yè)邏輯,而不用擔(dān)心周圍框架的實(shí)現(xiàn)問題。 nEJB容器是: 一個(gè)管理一個(gè)或多個(gè)EJB類/實(shí)例的抽象。它通過規(guī)范中定義的接口使EJB類訪問所需的服務(wù)。容器廠商也可以在容器或服務(wù)器中提供額外服務(wù)的接口。 nEJB服務(wù)器是: 管理EJB容器的高端進(jìn)程或應(yīng)用程序,并提供對(duì)系統(tǒng)服務(wù)的訪問。EJB服務(wù)器也可以提供廠商自己的特性,如優(yōu)化的數(shù)據(jù)庫訪問接口
24、,對(duì)其他服務(wù)(如CORBA服務(wù))的訪問。一個(gè)EJB服務(wù)器必須提供對(duì)可訪問JNDI的名字服務(wù)和事務(wù)服務(wù)支持。 什么是EJBEJB架構(gòu)nEnterprise JavaBeans有三種類型:qEntity Beansn代表數(shù)據(jù)n在服務(wù)器重啟后仍然存在n可以通過EJB container (“CMP”) 或者程序 (“BMP”) 持續(xù)化到數(shù)據(jù)庫 qSession Beansn執(zhí)行動(dòng)作n等價(jià)于一般的 Java object, 只不過是在遠(yuǎn)程n可以是 stateless (是原子操作), 或 stateful (在一個(gè) context中執(zhí)行一系列的操作)qMessage Driven BeanEJBEJB
25、介紹介紹Enterprise JavaBeansEJBEJB介紹介紹EJB服務(wù)器和容器EJBEJB介紹介紹EJB容器的責(zé)任業(yè)務(wù)數(shù)據(jù)模型業(yè)務(wù)數(shù)據(jù)模型n對(duì)業(yè)務(wù)概念的反映,也稱為領(lǐng)域類(domain class)n在持久存儲(chǔ)中業(yè)務(wù)實(shí)體的對(duì)象視圖n提供訪問和操作數(shù)據(jù)的對(duì)象封裝n支持多用戶共享的數(shù)據(jù)n可以從數(shù)據(jù)庫中存儲(chǔ)的屬性重新實(shí)例化qEJB 服務(wù)器崩潰后仍可重構(gòu)q與數(shù)據(jù)庫中的數(shù)據(jù)有一樣長的生命EJBEJB介紹介紹實(shí)體bean(Entity Bean)nBean-Managed Persistence(自管理的持久性)q優(yōu)點(diǎn):n開發(fā)者有完全的控制n無需復(fù)雜的提供商支持q缺點(diǎn):n編碼復(fù)雜 在改變時(shí)需要重新
26、編碼和部署n影響可移植性nContainer-Managed Persistence(容器管理的持久性)q優(yōu)點(diǎn):n提供商解決,可能會(huì)有更好的緩沖和性能n在部署描述符中進(jìn)行改變即可 可移植性好q缺點(diǎn):n對(duì)容器提供商的工具依賴性強(qiáng)n可能不易反映復(fù)雜的數(shù)據(jù)關(guān)系EJBEJB介紹介紹實(shí)體bean的持久性n會(huì)話bean經(jīng)常用于涉及多個(gè)實(shí)體bean的業(yè)務(wù)處理和控制邏輯SessionEntityEntityEntityEJBEJB介紹介紹會(huì)話bean(Session Bean)(1)n相對(duì)生命較短(一般與客戶同步)n在EJB服務(wù)器崩潰時(shí)被刪除n不表示數(shù)據(jù)庫中的數(shù)據(jù),但可以訪問數(shù)據(jù)n作為一個(gè)客戶的代表執(zhí)行功能n
27、可以加入事務(wù)EJBEJB介紹介紹會(huì)話bean(Session Bean)(2)n使用會(huì)話bean 對(duì)針對(duì)于某一客戶的處理或控制對(duì)象建模n對(duì)工作流、任務(wù)和管理活動(dòng)等建模(如訂房、購物車等)n協(xié)調(diào)多個(gè)實(shí)體bean,控制實(shí)體bean之間的交互n將業(yè)務(wù)應(yīng)用邏輯從客戶端轉(zhuǎn)移到服務(wù)器端EJBEJB介紹介紹何時(shí)使用會(huì)話Bean會(huì)話beann表示一個(gè)業(yè)務(wù)過程n每一客戶一個(gè)實(shí)例nShort-lived:與客戶生命同步n暫態(tài)的n服務(wù)器崩潰后丟失n可以是事務(wù)性的實(shí)體bean n表示業(yè)務(wù)數(shù)據(jù)n在多個(gè)客戶間共享實(shí)例nLong-lived:與數(shù)據(jù)庫中數(shù)據(jù)同步n持久的n服務(wù)器崩潰后可重構(gòu)n總是事務(wù)性的EJBEJB介紹介紹會(huì)
28、話Bean?實(shí)體Bean?n無狀態(tài)(Stateless)bean q表達(dá)一個(gè)無狀態(tài)的服務(wù)(如列表,mail)q不存儲(chǔ)用戶相關(guān)信息,進(jìn)行對(duì)請(qǐng)求的響應(yīng)q暫態(tài)的q可用來構(gòu)造響應(yīng)頻繁而簡單的訪問的bean池n有狀態(tài)(Stateful)bean q維護(hù)客戶狀態(tài)EJBEJB介紹介紹兩種類型的會(huì)話beanJNDInJava Naming and Directory InterfacenJ2EE應(yīng)用利用JNDI來定位資源和對(duì)象,使軟件更容易移植q應(yīng)用程序通過JNDI用符號(hào)名稱查找關(guān)聯(lián)資源的對(duì)象q符號(hào)名稱和對(duì)象之間的關(guān)聯(lián)由系統(tǒng)管理人員在應(yīng)用程序部署時(shí)配置nJNDI的使用qInitialContext ic =
29、new InitialContext()qic.lookup(“resource name”)J2EE Web目錄結(jié)構(gòu)n頂層目錄通常是上下文路徑q如:應(yīng)用目錄/tomcat/webapps/servletdemoq通常情況下URL應(yīng)為q包含JSP、其他靜態(tài)內(nèi)容和WEB-INF目錄n/WEB-INF目錄q這是一個(gè)受保護(hù)的目錄,不能瀏覽這個(gè)目錄下的文件q/classes 未打包的java類,會(huì)自動(dòng)加到CLASS_PATH中q/lib web應(yīng)用中的jar文件Web應(yīng)用部署結(jié)構(gòu)Project FolderWEB-INFclassespackage1package2libJSP filesHTML f
30、ilespicturesweb.xmlDeployment descriptor部署結(jié)構(gòu)說明n*.html, *.jsp等qHtml、jsp和其他需要被客戶端訪問的文件nWEB-INF/web.xmlqWeb應(yīng)用部署描述符nWEB-INF/classesq編譯后的java類文件(包括servlet和非servlet)nWEB-INF/libqWeb應(yīng)用需要的JAR文件,包括JDBC驅(qū)動(dòng)程序等第三方模塊Web 部署描述符n/WEB-INF/web.xmlqJ2EE標(biāo)準(zhǔn)的一部分n定義一個(gè)web應(yīng)用中的servletq給servlet和URL之間作映射q一個(gè)servlet可以映射到多個(gè)URL上n定義
31、web應(yīng)用中可以使用的資源n定義安全n定義其他內(nèi)容q設(shè)定Welcome file列表q設(shè)定會(huì)話超時(shí)q錯(cuò)誤頁面映射Web應(yīng)用打包(WAR)nJ2EE規(guī)范定義了如何把一個(gè)web應(yīng)用歸檔成一個(gè)web application archive (WAR)nWAR文件 q后綴為.war的Java歸檔文件q用zip格式打包q符合J2EE規(guī)范的應(yīng)用服務(wù)器都可以正確識(shí)別nWAR文件直接部署在Tomcat等應(yīng)用服務(wù)器上J2EE應(yīng)用結(jié)構(gòu)EJBsWeb componentEJB DDEJB classRemote classHome classWeb DDJSP filesServlet ClassPictures
32、(GIF/JPG)HTML filesJ2EE ApplicationJ2EE DD.war file.ear file.jar fileJ2EE標(biāo)準(zhǔn)部署描述符nEnterprise Archive (ear) fileqApplication.xml在META-INF目錄下nJava Archive (jar) fileqejb-jar.xml在META-INF目錄下nWeb Archive (war) fileqweb.xml在WEB-INF目錄下J2EE設(shè)計(jì)模式(JSP為中心)n優(yōu)點(diǎn)q非常容易結(jié)合業(yè)務(wù)邏輯(JSP:UseBean)、服務(wù)器處理過程和HTML(),在JSP頁面中同時(shí)實(shí)現(xiàn)顯示
33、、業(yè)務(wù)邏輯和流程控制,從而快速完成應(yīng)用開發(fā)n缺點(diǎn)q應(yīng)用的實(shí)現(xiàn)一般是基于過程的,一組JSP頁面完成一個(gè)業(yè)務(wù)流程,如果要進(jìn)行改動(dòng),必須在多個(gè)地方進(jìn)行修改。這樣非常不利于應(yīng)用擴(kuò)展和更新。q由于應(yīng)用不是建立在模塊上,業(yè)務(wù)邏輯和表示邏輯混合在JSP頁面中,沒有進(jìn)行抽象和分離。不利于應(yīng)用系統(tǒng)業(yè)務(wù)的重用和改動(dòng)。J2EE設(shè)計(jì)模式(MVC框架)n表示與邏輯分開nView 表示:顯示輸入輸出數(shù)據(jù) (可以是 HTML,jsp,也可以是一個(gè) windows 應(yīng)用)nModel 業(yè)務(wù)邏輯和數(shù)據(jù):基于輸入和定義的業(yè)務(wù)流程執(zhí)行計(jì)算 或其它操作(javabean or ejb)nController 協(xié)調(diào)view 和 mod
34、el,在它們之間交換數(shù)據(jù)(action or servlet)databasesViewControllerModelJ2EE設(shè)計(jì)模式nMVC 的隱含式 J2EE 實(shí)現(xiàn)nView 由 JSP 和 HTML 頁面組成nServlet 可以同時(shí)是 controller 和 modelq直接存取數(shù)據(jù)databasesJSPsHTMLservletsMVC 實(shí)現(xiàn)方法實(shí)現(xiàn)方法1J2EE設(shè)計(jì)模式n將業(yè)務(wù)邏輯處理放在 Servlet 之外nHttpServlet 的子類應(yīng)該僅做 servlet 份內(nèi)的工作q管理 request、response 及 HttpSession 對(duì)象n將業(yè)務(wù)邏輯寫在傳統(tǒng)的Java
35、類q僅傳送普通的 Java 類,不是 servlet 相關(guān)的類(例如 request, response 或 session)q比 servlet 容易開發(fā)、測試和重用MVC 實(shí)現(xiàn)方法實(shí)現(xiàn)方法2databaseJSPsservletsobjectsn典型的 J2EE 方案nView 由JSP 和靜態(tài) HTML 組成nController 是 servlet nModel 是 EJBn很象使用傳統(tǒng)的 Java 對(duì)象 只是運(yùn)行在遠(yuǎn)程J2EE設(shè)計(jì)模式MVC 實(shí)現(xiàn)方法實(shí)現(xiàn)方法3databasesJSPsservletsEJBsn典型的Struts 方案nView 由JSP 和靜態(tài) HTML 組成nCo
36、ntroller 是 Struts nModel 是 EJB或javabeanJ2EE設(shè)計(jì)模式MVC 實(shí)現(xiàn)方法實(shí)現(xiàn)方法4databasesJSPsstrutsEJBsJavaBean應(yīng)用實(shí)例nSun Blueprint PetStorenmyPetStore - EJB versionnJPetStore struts + iBatisn大多數(shù)J2EE應(yīng)用共享許多任務(wù):q日志, 數(shù)據(jù)庫存取, 數(shù)據(jù)校驗(yàn), 屬性管理, 異常操作, 生成HTMLn不要在每一個(gè)項(xiàng)目中重寫這些n不要在同一個(gè)項(xiàng)目用不同的方法做這些!n一個(gè) “framework” 設(shè)定通用的方式去做這些工作 通過重用代碼 (和技能!)q可
37、能是內(nèi)部框架 (通過以前的項(xiàng)目)q可能是外部框架(e.g. JADE)技巧技巧使用框架n可以被緩存并可以被所有用戶共享qInitialContext objectnJNDIqEJB Home interfacesn所有用戶都一樣n可以被單獨(dú)的用戶緩存qDatabase resultsetsn例如,當(dāng)你一次只顯示部分?jǐn)?shù)據(jù)時(shí),緩存查詢結(jié)果n可以在 servlet 中緩存, 可以在 session bean 中緩存技巧技巧盡可能緩存對(duì)象ninit()做盡可能多的工作q只在初始化是執(zhí)行一次n盡可能少地使用 Synchronizeq確保不要 synchronize 整個(gè)類n不要用任何實(shí)例變量q將被所有在線的用戶使用n不要使用SingleThreadModelq雖然是 thread-safe, 但性能太差n對(duì)于非 Java 群體: 不要在 cookies 中存對(duì)象q使用 HttpSession 代替技巧技巧Servlet 技巧n保持盡量少的Java代碼qJSP中的Java代碼很難維護(hù)和測試q絕對(duì)不要將業(yè)務(wù)邏輯放在JSP中q編寫 helper classes 從數(shù)據(jù)生成HTMLq理想情況下只使用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度合同管理崗位職責(zé)及考核評(píng)價(jià)體系合同
- 二零二五年度一手房買賣合同解除及補(bǔ)償協(xié)議書
- 二零二五年度叉車安全操作規(guī)范協(xié)議及安全責(zé)任追究辦法
- 2025年度生物科技項(xiàng)目出資入股合同
- 二零二五年度門窗行業(yè)技術(shù)培訓(xùn)與咨詢服務(wù)合同協(xié)議
- 政府臨時(shí)工合同工2025年度勞動(dòng)合同履行與監(jiān)督協(xié)議
- 二零二五年度新能源債權(quán)轉(zhuǎn)讓與項(xiàng)目合作合同
- 二零二五年度人工智能研發(fā)團(tuán)隊(duì)勞動(dòng)集體合同(人工智能應(yīng)用)
- 教師教育教學(xué)質(zhì)量評(píng)估合作協(xié)議2025年度范本
- 2025年度高校畢業(yè)生就業(yè)見習(xí)基地協(xié)議
- DeepSeek從入門到精通
- 植保機(jī)械技術(shù)培訓(xùn)課件
- 人工智能賦能職業(yè)教育高質(zhì)量發(fā)展研究
- 2024年水利工程建設(shè)行業(yè)市場發(fā)展監(jiān)測及投資潛力預(yù)測報(bào)告
- 崗位職責(zé)心得體會(huì)(2篇)
- 高中地理興趣小組活動(dòng)方案
- 立案委托書撰寫指南讓法律更簡單3篇
- 機(jī)械設(shè)計(jì)基礎(chǔ) 課件 01機(jī)械設(shè)計(jì)概論
- 基于大數(shù)據(jù)的消費(fèi)趨勢(shì)預(yù)測與分析報(bào)告
- 高三地理一輪復(fù)習(xí)+課件+第三部分+4.4國際合作
- 全國第三屆職業(yè)技能大賽(智能網(wǎng)聯(lián)汽車裝調(diào)運(yùn)維)選拔賽理論考試題庫(含答案)
評(píng)論
0/150
提交評(píng)論