版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java EE應(yīng)用系統(tǒng)架構(gòu)2022/8/3鄭重Java EEJava EE是什么?Java Platform, Enterprise Edition Java EE是一種利用Java平臺(tái)來(lái)簡(jiǎn)化企業(yè)解決方案的開(kāi)發(fā)、部署和管理相關(guān)的復(fù)雜問(wèn)題的體系結(jié)構(gòu)。Java EE以Java SE為基礎(chǔ),為企業(yè)提供了完整的、穩(wěn)定的、安全的、快速的Java平臺(tái)。Java EE并不是一個(gè)技術(shù)而是一個(gè)標(biāo)準(zhǔn)。Java EE大綱Java EE應(yīng)用系統(tǒng)架構(gòu)公司現(xiàn)有主要框架介紹表現(xiàn)層業(yè)務(wù)邏輯層數(shù)據(jù)層架構(gòu)分析課堂練習(xí)架構(gòu)與框架的區(qū)別架構(gòu)architecture 系統(tǒng)在其所處環(huán)境中的最高層次的劃分 IEEE。軟件架構(gòu) = 組件元素
2、,元素互助合作之模式,基礎(chǔ)要求與限制 。 架構(gòu)設(shè)計(jì)就是將各組件元素以某些理想的合作模式組織起來(lái)以達(dá)成系統(tǒng)的基本功能和限制。框架framework 框架指的是一種機(jī)制,這種機(jī)制負(fù)責(zé)控制各協(xié)作對(duì)象之間的交互,比如Apache Struts框架,Microsoft MFC框架。 框架和類(lèi)庫(kù)的差別:類(lèi)庫(kù)中的基類(lèi)是被用戶(hù)的類(lèi)調(diào)用的,而框架中正相反,用戶(hù)的類(lèi)會(huì)被框架調(diào)用。 Sun Java EE架構(gòu)圖大綱Java EE應(yīng)用系統(tǒng)架構(gòu)公司現(xiàn)有主要框架介紹表現(xiàn)層業(yè)務(wù)邏輯層數(shù)據(jù)層架構(gòu)分析課堂練習(xí)Java EE APP Arch JSPSession FacadeActionFormActionDelegate C
3、MP/BMPDAODatabase表現(xiàn)層 業(yè)務(wù)邏輯層 數(shù)據(jù)層 Struts框架EJB容器Application ServiceEJB容器Ejb3邏輯架構(gòu)首次使用 ejb3.0 結(jié)合 hibernate 的持久化框架,同時(shí)實(shí)現(xiàn)了多數(shù)據(jù)源實(shí)時(shí)切換的spring 動(dòng)態(tài)數(shù)據(jù)源注射機(jī)制。讓開(kāi)發(fā)人員的核心工作從代碼實(shí)現(xiàn)轉(zhuǎn)移到商業(yè)邏輯的實(shí)現(xiàn)。SimpleORM架構(gòu)大綱Java EE應(yīng)用系統(tǒng)架構(gòu)公司現(xiàn)有主要框架介紹表現(xiàn)層業(yè)務(wù)邏輯層數(shù)據(jù)層架構(gòu)分析課堂練習(xí)表現(xiàn)層在此指用戶(hù)界面層和頁(yè)面邏輯層。該層封裝了實(shí)現(xiàn)客戶(hù)端表現(xiàn)的所有邏輯,包括的組件有Filter、JspTag 、JSP/Servlet等。我們?cè)诒硎緦又胁捎昧?/p>
4、基于MVC的Struts框架。表現(xiàn)層過(guò)濾器: 是對(duì)請(qǐng)求資源和響應(yīng)資源執(zhí)行過(guò)濾任務(wù)的一種策略web.xml文件中filter的片段 filterName top.struts.action.ValidatorFilter filterName *.do攔截過(guò)濾器Context策略: 按照協(xié)議無(wú)關(guān)的方式封裝狀態(tài),然后在整個(gè)應(yīng)用系統(tǒng)中使用這種封裝后的對(duì)象。例:Struts框架的form很好屏蔽了對(duì)request的依賴(lài)。Context對(duì)象FrontController: 前端控制器目的是集中地、模塊化的進(jìn)行請(qǐng)求和響應(yīng)的管理。例:Struts框架的ActionServlet在Struts中起到了前端控制
5、的功能。前端控制器視圖助手: 目的是為了把視圖和相關(guān)的處理邏輯分離開(kāi)。例:Struts利用JSP標(biāo)準(zhǔn)標(biāo)記庫(kù)(JavaServer Pages Standard Tag Library)JSTL技術(shù)實(shí)現(xiàn)的一套標(biāo)簽庫(kù)。視圖助手Control(Action)1.訪(fǎng)問(wèn)業(yè)務(wù)邏輯2.準(zhǔn)備頁(yè)面數(shù)據(jù)3.控制頁(yè)面跳轉(zhuǎn)View(Jsp+Tag)1.用表單采集數(shù)據(jù)2.用Tag顯示數(shù)據(jù)Model(ActionForm/VO)1.表單對(duì)象2.業(yè)務(wù)數(shù)據(jù)MVC大綱Java EE應(yīng)用系統(tǒng)架構(gòu)表現(xiàn)層業(yè)務(wù)邏輯層數(shù)據(jù)層架構(gòu)分析課堂練習(xí)業(yè)務(wù)代表Delegate業(yè)務(wù)代表的四個(gè)作用:避免客戶(hù)端直接與業(yè)務(wù)服務(wù)接口交互,提高靈活性。提高網(wǎng)絡(luò)
6、傳輸性能,通過(guò)緩存數(shù)據(jù),避免與細(xì)粒度的服務(wù)多次的往返交互。避免客戶(hù)端代碼中包含底層架構(gòu)代碼,包括命名服務(wù)JNDI,網(wǎng)絡(luò)連接故障處理等。將系統(tǒng)級(jí)異常轉(zhuǎn)換成應(yīng)用級(jí)異常,對(duì)用戶(hù)更加友好。從傳統(tǒng)意義上來(lái)說(shuō),業(yè)務(wù)代表僅僅是一層薄薄的皮膚,它將所有的請(qǐng)求都轉(zhuǎn)發(fā)給業(yè)務(wù)服務(wù)組件。業(yè)務(wù)代表與會(huì)話(huà)門(mén)面是一一對(duì)應(yīng)的。業(yè)務(wù)代表實(shí)現(xiàn)策略代理策略可以實(shí)現(xiàn)驗(yàn)證,數(shù)據(jù)或引用的緩存等功能適配器策略與外部系統(tǒng)交互時(shí),可以在業(yè)務(wù)代表外面包裝上適配器,提供給外部系統(tǒng)調(diào)用使用POJO(Plain Old Java Object)實(shí)現(xiàn)業(yè)務(wù)代表。會(huì)話(huà)門(mén)面Session Facade會(huì)話(huà)門(mén)面的作用:方法服務(wù),將業(yè)務(wù)組件和粗粒度業(yè)務(wù)服務(wù)暴露給
7、遠(yuǎn)程客戶(hù)端。降低遠(yuǎn)程客戶(hù)端和細(xì)粒度的業(yè)務(wù)組件、業(yè)務(wù)服務(wù)交互造成的網(wǎng)絡(luò)負(fù)擔(dān)。使用Session Bean實(shí)現(xiàn)會(huì)話(huà)門(mén)面。會(huì)話(huà)門(mén)面中包含的業(yè)務(wù)邏輯應(yīng)很少或一點(diǎn)兒也不包含,如果有業(yè)務(wù)邏輯,應(yīng)該放在應(yīng)用服務(wù)里。應(yīng)用服務(wù)Application Service應(yīng)用服務(wù)的作用:把多個(gè)業(yè)務(wù)層組件和服務(wù)之間的業(yè)務(wù)邏輯集中起來(lái),聚合特定功能,提供一個(gè)統(tǒng)一的服務(wù)層。減少會(huì)話(huà)門(mén)面中的業(yè)務(wù)邏輯。讓某種業(yè)務(wù)邏輯調(diào)度多個(gè)業(yè)務(wù)對(duì)象或業(yè)務(wù)服務(wù)。在現(xiàn)存的業(yè)務(wù)層組件和服務(wù)之上提供一種粗粒度的服務(wù)API。需要在業(yè)務(wù)對(duì)象之外封裝專(zhuān)門(mén)針對(duì)特定用例的邏輯。通常使用POJO實(shí)現(xiàn)應(yīng)用服務(wù),特殊情況下可使用Session Bean 來(lái)實(shí)現(xiàn)。業(yè)務(wù)對(duì)
8、象模型業(yè)務(wù)對(duì)象模型的作用:把業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯分離出來(lái)。第一種策略是使用POJO,并選擇一種合適的持久化技術(shù),比如Hibernate。第二種策略是使用entity bean。傳輸對(duì)象DTO(VO)傳輸對(duì)象的作用: 一個(gè)實(shí)體往往有多個(gè)屬性,為了避免在網(wǎng)絡(luò)上多次調(diào)用get/set方法來(lái)獲得實(shí)體的屬性,提高應(yīng)用的性能。傳輸對(duì)象需要被序列化優(yōu)化前的數(shù)據(jù)傳輸 優(yōu)化前的數(shù)據(jù)傳輸代碼片段UserEntityHome objUserEntityHome= (UserEntityHome )Toolkit.getInstance() .getRemoteHome(“userEntityJNDIName“, Us
9、erEntityHome.class);UserEntityPK objUserEntityPK = new UserEntityPK (id);/得到實(shí)體對(duì)象UserEntity objUserEntity = objUserEntityHome.findByPrimaryKey(objUserEntityPK );objUserEntity.setName(“張三”);objUserEntity.setPassword(“123”);優(yōu)化后的數(shù)據(jù)傳輸 VO業(yè)務(wù)代表/會(huì)話(huà)門(mén)面EJB容器優(yōu)化后的數(shù)據(jù)傳輸代碼片段UserEntityHome objUserEntityHome= (UserEnt
10、ityHome )Toolkit.getInstance() .getRemoteHome(“userEntityJNDIName“, UserEntityHome.class);UserEntityPK objUserEntityPK = new UserEntityPK (id);/得到實(shí)體對(duì)象UserEntity objUserEntity = objUserEntityHome.findByPrimaryKey(objUserEntityPK );UserVO objUserVO= objUserEntity .getUserVO();objUserVO.setName(“張三”);o
11、bjUserVO.setPassword(“123”);objUserEntity.setUserVO(objUserVO);大綱Java EE應(yīng)用系統(tǒng)架構(gòu)公司現(xiàn)有主要框架介紹表現(xiàn)層業(yè)務(wù)邏輯層數(shù)據(jù)層架構(gòu)分析課堂練習(xí)數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象DAO數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象的作用:可以按照復(fù)雜的條件進(jìn)行查詢(xún)??梢苑祷嘏康慕Y(jié)果集??梢栽L(fǎng)問(wèn)多種數(shù)據(jù)源,包括數(shù)據(jù)庫(kù)系統(tǒng)或者文件。通過(guò)Session Bean調(diào)用的DAO 存活于EJB容器內(nèi),此時(shí)可以進(jìn)行事務(wù)管理業(yè)務(wù)代表直接調(diào)用的DAO在EJB容器外,不能進(jìn)行事務(wù)管理DAO一般不進(jìn)行增刪改,只進(jìn)行查詢(xún)操作大綱Java EE應(yīng)用系統(tǒng)架構(gòu)公司現(xiàn)有主要框架介紹表現(xiàn)層業(yè)務(wù)邏輯層數(shù)據(jù)層架構(gòu)分
12、析課堂練習(xí)類(lèi)圖對(duì)象圖無(wú)數(shù)據(jù)庫(kù)事務(wù)的查詢(xún)對(duì)象圖沒(méi)有組合業(yè)務(wù)時(shí)對(duì)象圖有組合業(yè)務(wù)時(shí)對(duì)象圖有組合業(yè)務(wù)時(shí)的一種特例調(diào)用關(guān)系模塊AppService類(lèi)都要繼承自BaseAppServic類(lèi);一個(gè)模塊的AppService對(duì)象可調(diào)用其它模塊的AppService對(duì)象;AppService對(duì)象可調(diào)用entityBean、AppService和DAO;AppService對(duì)象只能調(diào)用這三類(lèi)對(duì)象; DAO中的方法必須是原子的,不能調(diào)sessionBean 或是其它DAO;調(diào)用關(guān)系6.Action、Man、DAO中不允許有業(yè)務(wù)方法。7.Man對(duì)象只能調(diào)用本模塊的sessionBean對(duì)象;8.sessionBean
13、只能調(diào)用本模塊的AppService對(duì)象;9.一個(gè)實(shí)現(xiàn)SessionFacade的sessionBean對(duì)象可直接調(diào)用多個(gè)DAO和EntityBean,但不可寫(xiě)業(yè)務(wù)法;10.AppService對(duì)象實(shí)現(xiàn)所有業(yè)務(wù)層業(yè)務(wù)邏輯;11.AppService對(duì)象方法只能拋模塊異常。前端控制器ActionServletRequestProcessor視圖控制器Action業(yè)務(wù)代表Delegate業(yè)務(wù)實(shí)體Entity Bean會(huì)話(huà)門(mén)面Session Facade數(shù)據(jù)訪(fǎng)問(wèn)對(duì)象DAO資源Databasestruts-config.xmlhttp請(qǐng)求轉(zhuǎn)發(fā)(*.do)分發(fā)訪(fǎng)問(wèn)查詢(xún)數(shù)據(jù)訪(fǎng)問(wèn)獲取/設(shè)置數(shù)據(jù)SQL語(yǔ)句值對(duì)
14、象VO訪(fǎng)問(wèn)視圖JSP轉(zhuǎn)發(fā)(*.jsp)視圖JSP過(guò)濾器FilterJava EE APP Arch應(yīng)用服務(wù)Application Service訪(fǎng)問(wèn)top.app.module.actiontop.app.module.delegatetop.app.module.appservicetop.app.module.modeltop.app.module.ejbtop.app.module.ejb.entitytop.app.module.daotop.app.module.exception中間的.app.module表示項(xiàng)目組根據(jù)需要修改。其它要添加的類(lèi)可以直接放在app.module目錄下。代碼的組織結(jié)構(gòu)-java大綱Java EE應(yīng)用系統(tǒng)架構(gòu)公司現(xiàn)有主要框架介紹表現(xiàn)層業(yè)務(wù)邏輯層數(shù)據(jù)層架構(gòu)分析課堂練習(xí)課堂練習(xí)使用公司的Java EE架構(gòu)分析如何實(shí)現(xiàn)一個(gè)用戶(hù)注冊(cè)功能。具體要求如下:1、需要填寫(xiě)用戶(hù)名、密碼、姓名、E-Mail。2、如果
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年舞蹈表演藝術(shù)人才培養(yǎng)機(jī)構(gòu)合同模板2篇
- 2024年餐館廚師勞動(dòng)合同3篇
- 2025年度網(wǎng)絡(luò)安全監(jiān)測(cè)合同范本共十七項(xiàng)安全防護(hù)措施3篇
- 2024年限期土地開(kāi)發(fā)承包協(xié)議
- 1《義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)(2022年版)》自測(cè)卷
- 2024年采購(gòu)合作合同范本一
- 2024年節(jié)能打印機(jī)銷(xiāo)售及售后服務(wù)合同3篇
- 2025年度住宅防盜門(mén)個(gè)性化定制合同3篇
- 2024年珠海房產(chǎn)買(mǎi)賣(mài)合同3篇
- 2025年度船舶建造項(xiàng)目股權(quán)轉(zhuǎn)讓與工程監(jiān)理合同3篇
- 帕金森患者生活質(zhì)量問(wèn)卷(PDQ-39)
- 挖掘機(jī)、裝載機(jī)崗位風(fēng)險(xiǎn)告知卡
- JGJT280-2012 中小學(xué)校體育設(shè)施技術(shù)規(guī)程
- 基于MATLAB光伏儲(chǔ)能并網(wǎng)的直流微電網(wǎng)系統(tǒng)的研究與設(shè)計(jì)
- 藥店突發(fā)事件與應(yīng)急處理
- JJG 976-2024透射式煙度計(jì)
- (完整word)工程造價(jià)咨詢(xún)公司管理制度
- 鄉(xiāng)村廣場(chǎng)景觀(guān)分析報(bào)告
- 急性白血病小講課護(hù)理課件
- 萬(wàn)科物業(yè)-常見(jiàn)突發(fā)事件處理
- 安徽省合肥市瑤海區(qū)2023-2024學(xué)年六年級(jí)上學(xué)期期末語(yǔ)文試卷
評(píng)論
0/150
提交評(píng)論