J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織_第1頁
J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織_第2頁
J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織_第3頁
J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織_第4頁
J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織_第5頁
已閱讀5頁,還剩108頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織課程安排第一部份:介紹實(shí)例架構(gòu)結(jié)合實(shí)例講解Web項(xiàng)目總體結(jié)構(gòu)分析多層結(jié)構(gòu)優(yōu)點(diǎn)具體講解每個(gè)層次的實(shí)現(xiàn)技巧J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織課程安排第一部份:介紹實(shí)例架構(gòu)J2EE架構(gòu)設(shè)計(jì)UML軟件工程課程安排第二部分:介紹組織層次關(guān)聯(lián)利器(Spring)快速入門Factory模式IOC模式AOP模式演練Spring的威力J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織課程安排第二部分:介紹組織層次關(guān)聯(lián)利器(Spring)J2E課程安排第三部分:介紹日志管理利器(Log4j)快速入門演練Log4j的優(yōu)越性J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織課程安排

2、第三部分:介紹日志管理利器(Log4j)J2EE架構(gòu)課程安排第四部分:介紹UI層利器(Struts)Struts介紹快速入門ActionFromAction客戶端驗(yàn)證J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織課程安排第四部分:介紹UI層利器(Struts)J2EE架構(gòu)課程安排第五部分:介紹數(shù)據(jù)持久層利器(HIbernate)快速入門介紹輔助工具表與表之間關(guān)聯(lián)操作多數(shù)據(jù)庫操作事務(wù)管理DAO模式與Spring結(jié)合使用J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織課程安排第五部分:介紹數(shù)據(jù)持久層利器(HIbernate)J課程安排第六部分:介紹軟件測(cè)試與部署借助Junit的單元測(cè)試借助Ant的自動(dòng)部署J2EE架構(gòu)設(shè)計(jì)U

3、ML軟件工程組織課程安排第六部分:介紹軟件測(cè)試與部署J2EE架構(gòu)設(shè)計(jì)UML軟實(shí)例架構(gòu)J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織實(shí)例架構(gòu)J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織層次介紹實(shí)例分為四層:通過Struts實(shí)現(xiàn)UI層通過Spring實(shí)現(xiàn)業(yè)務(wù)層通過Hibernate實(shí)現(xiàn)數(shù)據(jù)持久層傳輸于各層的域?qū)ο髮覬2EE架構(gòu)設(shè)計(jì)UML軟件工程組織層次介紹實(shí)例分為四層:J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織結(jié)構(gòu)優(yōu)點(diǎn)通過成熟的開源產(chǎn)品搭建層次清晰性能穩(wěn)定的系統(tǒng)架構(gòu)。層與層之間松散耦合,增加代碼重用率,提高開發(fā)效率。每一層充當(dāng)各自具體任務(wù),便于團(tuán)隊(duì)分工和后期維護(hù)。穩(wěn)健的架構(gòu)能承受業(yè)務(wù)的擴(kuò)展,不至于使項(xiàng)目失控。J2EE架構(gòu)設(shè)計(jì)U

4、ML軟件工程組織結(jié)構(gòu)優(yōu)點(diǎn)通過成熟的開源產(chǎn)品搭建層次清晰性能穩(wěn)定的系統(tǒng)架構(gòu)。JUI Layer UI是User Interface的縮寫,這一層是面向用戶的界面,充當(dāng)與用戶互動(dòng)的角色。即接受用戶請(qǐng)求作出響應(yīng)。實(shí)現(xiàn)這一功能最佳經(jīng)驗(yàn)即MVC模式,實(shí)例中該層借助Struts實(shí)現(xiàn),Struts本身就是MVC思想的產(chǎn)物。 J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織UI Layer UI是User Interface的縮寫UI LayerStruts提供ActionFrom來封裝與用戶互動(dòng)的數(shù)據(jù)元素。Struts提供Action來接受用戶請(qǐng)求與發(fā)生響應(yīng)動(dòng)作。Struts提供ValidatorPlugIn來進(jìn)行UI驗(yàn)

5、證。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織UI LayerStruts提供ActionFrom來封裝與Business Layer具體的業(yè)務(wù)邏輯通常導(dǎo)致代碼的高度耦合,因此我們將業(yè)務(wù)邏輯分為單獨(dú)的一層,其目的也是希望通過層,來降低它與系統(tǒng)其他部分的耦合度。該層借助Spring可以達(dá)到更好的效果。通過Spring的IOC模式來裝配業(yè)務(wù)組件,如,DAO對(duì)象。使系統(tǒng)更具擴(kuò)展性。通過Spring AOP(面向方面)思想,來集中處理具體業(yè)務(wù),如事務(wù)管理,使代碼更為簡潔,增加復(fù)用,提高開發(fā)效率。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Business Layer具體的業(yè)務(wù)邏輯通常導(dǎo)致代碼的高Persistence

6、Layer 在傳統(tǒng)的系統(tǒng)開發(fā)中該層占據(jù)大部分的開發(fā)時(shí)間,且隨著需求的變更功能的修改,逐漸變得難以控制,特別是表結(jié)構(gòu)的變化可能導(dǎo)致整個(gè)系統(tǒng)大動(dòng)干戈。 在實(shí)例中我們借助Hibernate,利用其持久化機(jī)制和CRUD封裝來減少代碼開發(fā)量和其他層次的耦合度。 J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Persistence Layer 在傳統(tǒng)的系統(tǒng)開發(fā)中該層Domain Layer該層應(yīng)該說是ORM思想的產(chǎn)物,ORM用對(duì)象關(guān)聯(lián)數(shù)據(jù)表,允許數(shù)據(jù)表中數(shù)據(jù)放入對(duì)象,也允許對(duì)象中數(shù)據(jù)更新到數(shù)據(jù)表,我們將這些對(duì)象的集合歸為一個(gè)專門的層次即Domain Layer。域?qū)ο蟪袚?dān)各層之間數(shù)據(jù)通信的載體。實(shí)際上域?qū)ο笠彩且粋€(gè)完

7、完全全的業(yè)務(wù)對(duì)象,如User對(duì)象、Book對(duì)象。通過對(duì)業(yè)務(wù)的對(duì)象化,這有利于業(yè)務(wù)邏輯的重用。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Domain Layer該層應(yīng)該說是ORM思想的產(chǎn)物,OR系統(tǒng)結(jié)構(gòu)-回顧將系統(tǒng)進(jìn)行如上的分成,從理論上可以讓其承擔(dān)各自職責(zé),UI層提供友好的用戶交互、業(yè)務(wù)層處理具體問題領(lǐng)域邏輯、持久層完成于數(shù)據(jù)庫讀取存儲(chǔ)、域模型承擔(dān)數(shù)據(jù)傳輸?shù)妮d體。將一個(gè)復(fù)雜的應(yīng)用領(lǐng)域細(xì)分成諸多最小單元,然后進(jìn)行串聯(lián)、組合。使得一個(gè)應(yīng)用領(lǐng)域的實(shí)現(xiàn)過程中,最小單元達(dá)到最大復(fù)用。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織系統(tǒng)結(jié)構(gòu)-回顧將系統(tǒng)進(jìn)行如上的分成,從理論上可以讓其承擔(dān)各Spring-簡介springFram

8、ework是種非侵入式輕量級(jí)框架,允許自由選擇和組裝各部分功能,也提供了和其他很多軟件集成的接口,如與Hibernate、Struts的集成。 Spring主要功能有 Dependency Injection、Spring Context、 Spring AOP、Spring ORM、Spring DAO、Spring MVC。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-簡介springFramework是種非侵入Spring-為什么使用Spring利用延時(shí)注入思想組裝代碼,提高系統(tǒng)擴(kuò)展性,靈活性,實(shí)現(xiàn)插件式編程。利用AOP思想,集中處理業(yè)務(wù)邏輯,減少重復(fù)代碼,構(gòu)建優(yōu)雅的解決方案。利用Hi

9、bernateTransactionManager類封裝Hibernate事務(wù)管理,其是AOP思想的典型運(yùn)用,使持久層操作代碼簡潔精悍。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-為什么使用Spring利用延時(shí)注入思想組裝代碼Spring-搭建Web應(yīng)用環(huán)境下載springFramework最新版本,將其下的*.jar 拷貝到項(xiàng)目lib中,并引用。在Web.xml中配置spring的啟動(dòng)方式:Listener方式或Servlet方式。設(shè)置Spring配置文件。通常在系統(tǒng)運(yùn)行前完Spring成初始化工作,因此在Web.xml中配置一個(gè)初始化Servlet。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織S

10、pring-搭建Web應(yīng)用環(huán)境下載springFramewSpring-搭建Web應(yīng)用環(huán)境J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-搭建Web應(yīng)用環(huán)境J2EE架構(gòu)設(shè)計(jì)UML軟件工Spring-搭建Web應(yīng)用環(huán)境J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-搭建Web應(yīng)用環(huán)境J2EE架構(gòu)設(shè)計(jì)UML軟件工Spring-搭建Web應(yīng)用環(huán)境J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-搭建Web應(yīng)用環(huán)境J2EE架構(gòu)設(shè)計(jì)UML軟件工Spring-Factory模式在實(shí)際開發(fā)中會(huì)經(jīng)常用到工廠模式,其完成的功能是使外部調(diào)用類不需關(guān)心具體實(shí)現(xiàn)類,這樣非常適合在同一個(gè)事物類型具有多種不同實(shí)現(xiàn)的情況下使

11、用。要實(shí)現(xiàn)工廠模式我們必須設(shè)計(jì)AbstractFactory類AbstractProduct類,為了實(shí)現(xiàn)靈活性還可能用反射機(jī)制構(gòu)建Product實(shí)體。在得到具體實(shí)現(xiàn)類的時(shí)候也必須通過工廠類完成,如圖所示:J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-Factory模式在實(shí)際開發(fā)中會(huì)經(jīng)常用到工廠模Spring-Factory模式J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-Factory模式J2EE架構(gòu)設(shè)計(jì)UML軟件工Spring-依賴注入Spring的依賴注入能達(dá)到工廠模式的同樣的效果,但其實(shí)現(xiàn)卻優(yōu)雅很多??慈缦麓a:在Spring配置文件中配置Bean實(shí)現(xiàn)代碼:Product a = X

12、XX.getBean(“Product);這樣即得到了ProductA的實(shí)例,代碼中只硬編碼了Product接口。是不是讓你興奮了?J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-依賴注入Spring的依賴注入能達(dá)到工廠模式的Spring-依賴注入Spring還允許以下三種方式實(shí)現(xiàn)依賴注入:設(shè)值注入接口注入構(gòu)造函數(shù)注入J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-依賴注入Spring還允許以下三種方式實(shí)現(xiàn)依賴Spring-依賴注入我們重點(diǎn)講述設(shè)值注入方式,先來看看通過設(shè)值注入能給實(shí)際開發(fā)帶來什么好處.下圖是不是讓你有所領(lǐng)悟?J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-依賴注入我們重點(diǎn)講述

13、設(shè)值注入方式,先來看看通過Spring-演練我們利用設(shè)值注入實(shí)現(xiàn)一個(gè)簡單的計(jì)算器,讓它實(shí)現(xiàn)兩個(gè)數(shù)的加法或減法運(yùn)算。類圖如下:Product實(shí)現(xiàn)類中與具體實(shí)現(xiàn)類無關(guān)聯(lián)、無依賴,通過外部配置即可自由切換實(shí)現(xiàn)類,美妙!J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-演練我們利用設(shè)值注入實(shí)現(xiàn)一個(gè)簡單的計(jì)算器,讓它Spring-演練假設(shè)我們要實(shí)現(xiàn)兩個(gè)數(shù)相加,則配置如下(如果需要實(shí)現(xiàn)兩個(gè)數(shù)相減,則將注釋的algorithm Bean替換掉當(dāng)前的即可):J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-演練假設(shè)我們要實(shí)現(xiàn)兩個(gè)數(shù)相加,則配置如下(如果Spring-演練測(cè)試代碼如下,根據(jù)具體的實(shí)現(xiàn)類不同將得到兩個(gè)

14、數(shù)相應(yīng)運(yùn)算的結(jié)果。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-演練測(cè)試代碼如下,根據(jù)具體的實(shí)現(xiàn)類不同將得到兩Spring-依賴注入總結(jié)從演練的例子可以看出Spring提供的依賴注入思想能讓代碼之間依賴性降低,轉(zhuǎn)而交給配置文件進(jìn)行外部配置,這樣對(duì)于需求變化、后期維護(hù)、功能擴(kuò)展帶來便利。Spring是一種工具,更是一種思想,開發(fā)人員可以在設(shè)計(jì)代碼時(shí)發(fā)揮無限想象,挖掘出最適應(yīng)項(xiàng)目代碼組織形式。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-依賴注入總結(jié)從演練的例子可以看出SpringSpring-AOP模式AOP的全稱為Aspect Oriented Programming,譯為“面向方面編程”

15、或“面向切面編程”,與熟悉的OOP(面向?qū)ο缶幊蹋┧枷胨P(guān)注的目標(biāo)有本質(zhì)上的區(qū)別,AOP是針對(duì)具體業(yè)務(wù)領(lǐng)域、業(yè)務(wù)邏輯;OOP針對(duì)業(yè)務(wù)對(duì)象。Spring中事務(wù)管理機(jī)制就是AOP的一個(gè)具體運(yùn)用。利用此機(jī)制省去了我們?cè)诿總€(gè)具體實(shí)現(xiàn)類中去進(jìn)行事務(wù)管理的編碼,而將這一切交給Spring提供的事務(wù)代理實(shí)現(xiàn)類erceptor.TransactionProxyFactoryBean。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-AOP模式AOP的全稱為Aspect OriSpring-AOP模式在講述AOP運(yùn)用之前我們先來了解下AOP實(shí)現(xiàn)原理。Spring的Dependency Injection和AOP都

16、是某一設(shè)計(jì)模式的經(jīng)典應(yīng)用及放大。也許通過Spring的事物管理機(jī)制你已經(jīng)將AOP的實(shí)現(xiàn)原理與代理模式聯(lián)系在一起了。的確如此,讓我們先看看代理模式的思想。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-AOP模式在講述AOP運(yùn)用之前我們先來了解下ASpring-Proxy代理模式的思想是:不讓外部直接訪問具體目標(biāo),而是通過一個(gè)代理類才能訪問具體目標(biāo)。類似在具體目標(biāo)與外部之間放置一道“隔離層“,所有與具體目標(biāo)的通信均需通過這道”隔離層”來傳送請(qǐng)求和返回狀態(tài)。這樣“隔離層“就能掌控訪問具體目標(biāo)的前前后后。如果我們需要在訪問具體目標(biāo)前或后加上一致的處理邏輯,無疑代理模式最為適合。就如事物管理。J2EE

17、架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-Proxy代理模式的思想是:不讓外部直接訪問具Spring-Proxy下面演練用Proxy模式來實(shí)現(xiàn)JDBC事務(wù)管理, 先看類圖:先編寫Dao接口,讓所有訪問數(shù)據(jù)庫的類和代理類都繼承該接口,然后在代理類中傳入要訪問的具體類。這樣就能通過代理類完成對(duì)具體實(shí)例的訪問。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-Proxy下面演練用Proxy模式來實(shí)現(xiàn)JDSpring-ProxyJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-ProxyJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-ProxyJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-ProxyJ2E

18、E架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-Proxy從DaoImpl類中代碼可以看出我們沒有編寫事務(wù)的控制代碼,而是轉(zhuǎn)交給代理類完成,這樣訪問數(shù)據(jù)庫的具體類不需要自己關(guān)心事務(wù)處理。讓某一業(yè)務(wù)邏輯集中實(shí)現(xiàn),能避免重復(fù)編寫代碼,方便修改和維護(hù)。上面的例子有兩個(gè)缺陷局限一個(gè)相同的方法名。代理類繼承一個(gè)具體接口,即使有類似功能的類,當(dāng)接口改變,需新建繼承其接口的代理類。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-Proxy從DaoImpl類中代碼可以看出我們Spring-Proxy上面例子的缺陷可以通過Java的反射機(jī)制動(dòng)態(tài)創(chuàng)建實(shí)例、方法得到解決。通過該思想,JDK1.3以上版本實(shí)現(xiàn)了動(dòng)態(tài)代理(D

19、ynamic Proxy)。說到這里也許你已經(jīng)明白Spring Aop機(jī)制是基于Dynamic Proxy來實(shí)現(xiàn)的。下面讓我們來看看通過Spring Aop怎樣來實(shí)現(xiàn)事務(wù)管理。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-Proxy上面例子的缺陷可以通過Java的反射Spring-TransactionManageJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-TransactionManageJ2EE架構(gòu)Spring-TransactionManageJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-TransactionManageJ2EE架構(gòu)Spring-AOP利用事務(wù)管理的例子,我們分

20、析下AOP的概念:方面(Aspect)連接點(diǎn)(JoinPoint)通知(Advice)切入點(diǎn)(PointCut)目標(biāo)對(duì)象(TargetObject)J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-AOP利用事務(wù)管理的例子,我們分析下AOP的概Spring-AOPJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-AOPJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-AOPJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-AOPJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-AOP方面:我們將業(yè)務(wù)組件的事務(wù)管理部分提取出來,被提取的層面就稱為“方面“,如圖中的事務(wù)管理。方面的意義在于將業(yè)務(wù)邏輯中復(fù)雜問

21、題分離成不同層面,使其實(shí)現(xiàn)統(tǒng)一集中的管理。連接點(diǎn):程序在執(zhí)行過程中明確的點(diǎn),如execute()方法。通知:在特定的連接點(diǎn)執(zhí)行的動(dòng)作。如在執(zhí)行execute()方法前的預(yù)處理,在執(zhí)行完execute()方法后的后處理。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-AOP方面:我們將業(yè)務(wù)組件的事務(wù)管理部分提取出Spring-AOP切入點(diǎn):連接點(diǎn)的集合,指定在何時(shí)引發(fā)通知。如事務(wù)例子中配置了所有execute.*的方法為切入點(diǎn)。目標(biāo)對(duì)象:包含連接點(diǎn)的對(duì)象,也稱為被代理的對(duì)象。如圖中的業(yè)務(wù)組件。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-AOP切入點(diǎn):連接點(diǎn)的集合,指定在何時(shí)引發(fā)通知Sprin

22、g-AOP下面我們結(jié)合實(shí)例項(xiàng)目,看看借助Spring為程序結(jié)構(gòu)、代碼組織、業(yè)務(wù)處理所帶來的優(yōu)越。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-AOP下面我們結(jié)合實(shí)例項(xiàng)目,看看借助SprinSpring-思考在實(shí)際項(xiàng)目中哪些業(yè)務(wù)需求適合借助AOP思想實(shí)現(xiàn)?J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-思考在實(shí)際項(xiàng)目中哪些業(yè)務(wù)需求適合借助AOP思想Spring-案例習(xí)題請(qǐng)利用Spring IOC機(jī)制,完成項(xiàng)目中一組類的改造。請(qǐng)利用Spring AOP機(jī)制,設(shè)計(jì)一個(gè)能統(tǒng)一集中處理一組業(yè)務(wù)需求的類。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Spring-案例習(xí)題請(qǐng)利用Spring IOC機(jī)制,完成項(xiàng)Log

23、4j-介紹log4j是用于java語言的日志記錄工具,一個(gè)完整的軟件,日志是必不可少的。項(xiàng)目開發(fā)中日志記錄多種多樣,有打印在控制臺(tái)中,有記錄成文本文件,有保存到數(shù)據(jù)庫中等。日志信息也許需要分為調(diào)試日志,運(yùn)行日志,異常日志等。這些雖然實(shí)現(xiàn)簡單,但是也繁瑣。下面將介紹用log4j來實(shí)現(xiàn)日志記錄。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Log4j-介紹log4j是用于java語言的日志記錄工具Log4j-搭建環(huán)境下載log4j,/log4j,將log4j.jar拷貝到項(xiàng)目的lib中, 并引用。建立log4j的配置文件,Log4j.xml 或 LpertiesJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Log4j-搭

24、建環(huán)境下載log4j,http:/loggiLog4j-演練我們結(jié)合實(shí)例項(xiàng)目代碼來演示Log4j的使用及帶來的便利。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Log4j-演練我們結(jié)合實(shí)例項(xiàng)目代碼來演示Log4j的使用及Struts-介紹Struts是用于實(shí)現(xiàn)Web項(xiàng)目中UI層的開源產(chǎn)品,是MVC模式的經(jīng)典實(shí)現(xiàn)案例。它屬于Apache組織中的開源產(chǎn)品之一,之所以使用Struts:Struts將業(yè)務(wù)數(shù)據(jù)、頁面顯示、動(dòng)作處理進(jìn)行分離,這有利各部分的維護(hù)Struts采用Front Controller模式來實(shí)現(xiàn)動(dòng)作處理,讓所有的動(dòng)作請(qǐng)求都是經(jīng)過一個(gè)統(tǒng)一入口, 然后進(jìn)行分發(fā)。這樣方便我們?cè)谌肟谥屑尤肴挚刂拼a

25、的實(shí)現(xiàn),如安全控制、日志管理、國際化 編碼等J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Struts-介紹Struts是用于實(shí)現(xiàn)Web項(xiàng)目中UI層Struts-介紹通過Struts提供的ActionForm封裝web form 中的元素,使重用web表單成為可能借助Struts Validator框架幫助完成web層的驗(yàn)證工作,通常情況下我們不用再去為每個(gè)web頁面寫其驗(yàn)證代碼,只需通 過配置即可實(shí)現(xiàn)。這也減少了我們的開發(fā)量,由于驗(yàn)證代碼的集中管理,也為維護(hù)帶來便利J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Struts-介紹通過Struts提供的ActionFormStruts-快速入門我們結(jié)合實(shí)例來講解Str

26、uts的應(yīng)用:下載Struts,將其相關(guān)jar包引用到Web項(xiàng)目在web項(xiàng)目的web.xml中配置Action影射,將相應(yīng)請(qǐng)求動(dòng)作交給Struts提供的ActionServlet類進(jìn)行統(tǒng)一控制在web.xm配置所需要用到的的Struts標(biāo)簽文件建立ActionForm、Action建立視圖文件J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Struts-快速入門我們結(jié)合實(shí)例來講解Struts的應(yīng)用:Struts-ActionFromActionFrom是用來傳輸表單數(shù)據(jù)的對(duì)象,通過配置文件可以關(guān)聯(lián)到對(duì)應(yīng)的Action,實(shí)現(xiàn)在UI層與業(yè)務(wù)層之間的數(shù)據(jù)傳輸。 實(shí)現(xiàn)機(jī)制:Struts提供了一個(gè)org.apache

27、.struts.action.ActionForm類,里面實(shí)現(xiàn)了將請(qǐng)求表單中的元素賦值給其具體的 實(shí)現(xiàn)類屬性。因此自定義ActionForm類時(shí),只需繼承該類即可。在自定義ActionForm類時(shí)請(qǐng)保證其屬性名稱與所對(duì)應(yīng) 表單名稱一致。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Struts-ActionFromActionFrom是用Struts-ActionFrom當(dāng)觸發(fā)Action時(shí),通過配置文件匹配到對(duì)應(yīng)ActionFrom實(shí)例,以參數(shù)形式傳入。ActionForm的實(shí)現(xiàn)雖然簡單,但是隨著界面的增加,ActionForm類也會(huì)增加,造成代碼膨脹。在Struts1.1以上版本提供了 ActionF

28、orm的另一個(gè)實(shí)現(xiàn)類,org.apache.struts.action.DynaActionForm,該類充當(dāng)所有ActionForm的代理類,只需在配置ActionFrom時(shí)指定用該類實(shí)現(xiàn)即可J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Struts-ActionFrom當(dāng)觸發(fā)Action時(shí),通過Struts-ActionAction充當(dāng)了控制器的角色,每個(gè)請(qǐng)求都會(huì)觸發(fā)到Action類,我們?cè)谶@里處理邏輯業(yè)務(wù),分發(fā)數(shù)據(jù),鏈接轉(zhuǎn)向。 其實(shí)現(xiàn)機(jī)制:在web.xml配置影射規(guī)則,符合其影射條件的請(qǐng)求都會(huì)交給org.apache.struts.action.ActionServlet類處理, 在該類中將會(huì)實(shí)現(xiàn)o

29、rg.apache.struts.action.Action類中的相應(yīng)方法。在自定義Action類時(shí)只需繼承該類, 實(shí)現(xiàn)execute方法, 即可讓自定義的Action得到觸發(fā)。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Struts-ActionAction充當(dāng)了控制器的角色,每Struts-Actionexecute()方法中 ActionMapping、ActionForm實(shí)例通過讀取配置文件獲得。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Struts-Actionexecute()方法中 ActiStruts-客戶端驗(yàn)證在UI中對(duì)用戶提交的數(shù)據(jù)作驗(yàn)證是必不可少的,Struts也提供了相應(yīng)的實(shí)現(xiàn)。下面將結(jié)

30、合實(shí)例演示一個(gè)登錄界面的校驗(yàn):申明校驗(yàn)實(shí)現(xiàn)類,Struts中校驗(yàn)功能是通過org.apache.struts.validator.ValidatorPlugIn類實(shí)現(xiàn)。完善校驗(yàn)規(guī)則文件。在validator-rules.xml中定義了常用的客戶端驗(yàn)證規(guī)則,如,不為空,只允許 數(shù)字等。特殊的實(shí)現(xiàn)需要在此擴(kuò)充J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Struts-客戶端驗(yàn)證在UI中對(duì)用戶提交的數(shù)據(jù)作驗(yàn)證是必Struts-客戶端驗(yàn)證定義要被驗(yàn)證的表單信息建立存放驗(yàn)證提示信息的資源文件在界面設(shè)置觸發(fā)條件,如onsubmit時(shí)響應(yīng)驗(yàn)證動(dòng)作J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Struts-客戶端驗(yàn)證定義要被驗(yàn)證的表

31、單信息J2EE架構(gòu)設(shè)Hiernate-介紹對(duì)象到關(guān)系型數(shù)據(jù)映射(ORM)是架構(gòu)中熱門的話題,人們希望用ORM工具從單調(diào)的SQL中解脫出來, 規(guī)范數(shù)據(jù)層的開發(fā),提高開發(fā)效率。Hibernate也是實(shí)現(xiàn)這樣的功能。Hibernate性能穩(wěn)定、參考文檔齊全,有專門的組織提供升級(jí)與技術(shù)支持。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hiernate-介紹對(duì)象到關(guān)系型數(shù)據(jù)映射(ORM)是架構(gòu)中Hibernate-搭建環(huán)境從下載hibernate最新發(fā)行包。 然后將hibernate相關(guān)jar包加入項(xiàng)目lib,并引用。影射文件。影射類。加載配置信息。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-搭建環(huán)境從

32、www.hibernate.oHiernate-培訓(xùn)內(nèi)容下面我們將以此介紹關(guān)于Hiernate的如下運(yùn)用:表與表之間關(guān)聯(lián)操作多數(shù)據(jù)庫操作事務(wù)管理DAO模式與Spring結(jié)合使用輔助功能介紹J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hiernate-培訓(xùn)內(nèi)容下面我們將以此介紹關(guān)于HiernaHibernate-one-to-one一對(duì)一關(guān)聯(lián)有兩種方式:主鍵關(guān)聯(lián)主鍵關(guān)聯(lián)不需借助外部字段,直接通過兩個(gè)表的主鍵關(guān)聯(lián),因此必須保證兩個(gè)表的主鍵值一致。通常借助foreign標(biāo)識(shí)符生成器策略。唯一外鍵關(guān)聯(lián)在主動(dòng)方加入外鍵進(jìn)行關(guān)聯(lián),這樣主動(dòng)方與被動(dòng)方的影射關(guān)系實(shí)際上就成了多對(duì)一的關(guān)聯(lián)。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組

33、織Hibernate-one-to-one一對(duì)一關(guān)聯(lián)有兩種方式Hibernate- one-to-one-主鍵關(guān)聯(lián)J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate- one-to-one-主鍵關(guān)聯(lián)J2EEHibernate- one-to-one-主鍵關(guān)聯(lián)J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate- one-to-one-主鍵關(guān)聯(lián)J2EEHibernate- one-to-one-主鍵關(guān)聯(lián)J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate- one-to-one-主鍵關(guān)聯(lián)J2EEHibernate- one-to-one-外鍵關(guān)聯(lián)J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hiberna

34、te- one-to-one-外鍵關(guān)聯(lián)J2EEHibernate- one-to-one-外鍵關(guān)聯(lián)J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate- one-to-one-外鍵關(guān)聯(lián)J2EEHibernate- one-to-one-外鍵關(guān)聯(lián)J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate- one-to-one-外鍵關(guān)聯(lián)J2EEHibernate-many-to-many表之間多對(duì)多的關(guān)聯(lián),通常借助中間表來實(shí)現(xiàn),在實(shí)際的項(xiàng)目開發(fā)中也會(huì)經(jīng)常碰到,假設(shè)實(shí)現(xiàn)一個(gè)員工薪金計(jì)算,Employee表存放員工信息,Welfare表存放福利項(xiàng)目信息,Salary表存放員工薪金信息,一個(gè)員工可以擁有多項(xiàng)

35、福利,一項(xiàng)福利可以被多個(gè)員工擁有。Salary表用來保存這些關(guān)聯(lián)關(guān)系。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-many-to-many表之間多對(duì)多的Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計(jì)Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計(jì)Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計(jì)Hibernate-ma

36、ny-to-manyJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計(jì)Hibernate-復(fù)合主鍵復(fù)合主鍵是由多個(gè)字段一起組成,以此來構(gòu)成唯一鍵值。假設(shè)實(shí)現(xiàn)一個(gè)游戲的注冊(cè)功能。User表來存放用戶信息,Game表來存放游戲信息,Register表存放注冊(cè)信息。一個(gè)人可以注冊(cè)多個(gè)不同游戲,但是同一個(gè)人不允許重復(fù)注冊(cè)同一個(gè)游戲。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-復(fù)合主鍵復(fù)合主鍵是由多個(gè)字段一起組成,Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計(jì)UML軟件工程組Hibernat

37、e-復(fù)合主鍵J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計(jì)UML軟件工程組Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計(jì)UML軟件工程組Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計(jì)UML軟件工程組Hibernate-與Spring結(jié)合使用Spring Framework考慮到了與hibernate的集成,為此提供了一些非常好用的類:org.springframework.orm.hibernate.LocalSessionFactoryBea

38、,封裝Hibernate的SessionFactory。HibernateTransactionManager,封裝hibernate事務(wù)管理其次,Spring讓Hibernate DAO層的開發(fā)變得更為優(yōu)雅,下面一一介紹。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-與Spring結(jié)合使用Spring FHibernate-配置SessionFactoryJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-配置SessionFactoryJ2EHibernate-配置SessionFactoryJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-配置SessionFactoryJ

39、2EHibernate-配置SessionFactory將SessionFactory配置在Spring中最大的好處體現(xiàn)在當(dāng)項(xiàng)目中需要多個(gè)不同的SessionFactory時(shí)所帶來的便利,如,操作多個(gè)不同數(shù)據(jù)庫,我們需要分別建立不同的datasource和SessionFactory,這樣在DAO操作代碼中需要判斷該用哪個(gè)SessionFactory,而我們借助Spring可以讓具體DAO脫離具體SessionFactory,也就是說,DAO層完全可以不用關(guān)心具體數(shù)據(jù)源。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-配置SessionFactory將SHibernate-many Da

40、tabaseJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-many DatabaseJ2EE架構(gòu)設(shè)Hibernate-many DatabaseJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-many DatabaseJ2EE架構(gòu)設(shè)Hibernate-many DatabaseJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-many DatabaseJ2EE架構(gòu)設(shè)Hibernate-many DatabaseJ2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-many DatabaseJ2EE架構(gòu)設(shè)Hibernate-many DatabaseJ2EE架構(gòu)設(shè)計(jì)UML軟件工

41、程組織Hibernate-many DatabaseJ2EE架構(gòu)設(shè)Hibernate-DAO模式在業(yè)務(wù)類中既寫邏輯,又寫與底層存儲(chǔ)媒介交互代碼,使業(yè)務(wù)類變得復(fù)雜,且不便于維護(hù),因此我們用DAO模式將業(yè)務(wù)邏輯與底層存儲(chǔ)媒介交互分離,DAO的英文全稱為Data Access Object。從實(shí)例的架構(gòu)圖中可以看出,DAO充當(dāng)業(yè)務(wù)層與持久層的交互入口。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-DAO模式在業(yè)務(wù)類中既寫邏輯,又寫與底Hibernate-DAO模式假設(shè)實(shí)現(xiàn)一個(gè)用戶信息添加、修改、刪除、查找的功能。我們將這些調(diào)用持久層CRUD的操作,封裝在DAO對(duì)象中;將接收UI數(shù)據(jù)、邏輯判斷

42、封裝在業(yè)務(wù)管理類中。其代實(shí)現(xiàn)碼如下:J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-DAO模式假設(shè)實(shí)現(xiàn)一個(gè)用戶信息添加、修Hibernate-DAO模式J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-DAO模式J2EE架構(gòu)設(shè)計(jì)UML軟件工程Hibernate-DAO模式J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-DAO模式J2EE架構(gòu)設(shè)計(jì)UML軟件工程Hibernate-DAO模式-思考示例代碼中BookDao類中繼承了HibernateDaoSupport,BookManager類設(shè)置了注入DAO的屬性,請(qǐng)思考如何在Spring配置文件中進(jìn)行配置,使示例代碼正常運(yùn)行?J

43、2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-DAO模式-思考示例代碼中BookDaoHibernate-事務(wù)管理Hibernate中事務(wù)管理分為兩種:基于JDBC的事務(wù)管理,簡單封裝了JDBC的事務(wù)管理,因此其作用范圍在當(dāng)前JDBC連接中,也就是說只能在當(dāng)前Session中有效。基于JTA的事務(wù)管理,利用容器管理,可以跨越多個(gè)Session。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-事務(wù)管理Hibernate中事務(wù)管理分Hibernate-事務(wù)管理J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-事務(wù)管理J2EE架構(gòu)設(shè)計(jì)UML軟件工程組Hibernate-事務(wù)管理上面的

44、示例代碼展示了慣用的事務(wù)管理書寫格式,在講述Spring AOP 應(yīng)用的章節(jié),曾講述了利用AOP思想進(jìn)行事務(wù)的集中管理,同樣對(duì)于Hibernate的事務(wù)管理也可以利用此思想,下面讓我們看看如何使用:J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-事務(wù)管理上面的示例代碼展示了慣用的事務(wù)Hibernate-事務(wù)管理J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-事務(wù)管理J2EE架構(gòu)設(shè)計(jì)UML軟件工程組Hibernate-事務(wù)管理通過借助Spring AOP來管理事務(wù),如下代碼即可實(shí)現(xiàn)與在DAO類中書寫事務(wù)管理代碼同樣的功能:J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-事務(wù)管理

45、通過借助Spring AOP來Hibernate-輔助工具在編寫數(shù)據(jù)庫影射文件與影射類時(shí),可以借助一些工具來生成,減少工作量:Xdoclet:通過影射類中的Xdoclet標(biāo)簽,自動(dòng)生成影射文件。Middlegen:通過數(shù)據(jù)表生成影射文件。Hbm2java:通過帶Xdoclet標(biāo)簽的映射文件生成映射類。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-輔助工具在編寫數(shù)據(jù)庫影射文件與影射類時(shí)Hibernate-輔助工具-Xdocletxdoclet依靠標(biāo)簽完成與影射文件的同步,在實(shí)際開發(fā)中可以將影射類與影射文件的同步工作加入Ant任務(wù)中,給開發(fā)帶來便利。接下來我們根據(jù)實(shí)例項(xiàng)目演示其使用。J2EE架構(gòu)設(shè)計(jì)UML軟件工程組織Hibernate-輔助工具-XdocletxdocletHibernate-輔

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論