面試必備三大框架作用_第1頁(yè)
面試必備三大框架作用_第2頁(yè)
面試必備三大框架作用_第3頁(yè)
面試必備三大框架作用_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

1、一、Struts 在項(xiàng)目中的作用a)b)Struts 在項(xiàng)目主要起控制作用,只要用于 web 層(即視圖層和控制層)Struts 本身是使型的 MVC 結(jié)構(gòu)實(shí)現(xiàn)的,項(xiàng)目中使用了 struts 之后就等于項(xiàng)目也是一個(gè) MVC 結(jié)構(gòu),使項(xiàng)目結(jié)構(gòu)更清晰,分工更明細(xì)。Struts 在項(xiàng)目中主要負(fù)責(zé)視圖層、控制層,在視圖層提供了大量的c)庫(kù),提高視圖層的開(kāi)發(fā)速度。在控制層使用 控制器(Actionsupport)和配置文件(struts.xml),實(shí)現(xiàn) 用戶(hù)請(qǐng)求、封裝請(qǐng)求參數(shù)及頁(yè)面導(dǎo)航。優(yōu)點(diǎn):實(shí)現(xiàn) MVC 模式,結(jié)構(gòu)清晰,使開(kāi)發(fā)者只關(guān)注業(yè)務(wù)邏輯的實(shí)現(xiàn).有豐富的 tag 可以用 ,Struts 的標(biāo)記庫(kù)(

2、Taglib),如能靈活動(dòng)用,則能大大提高開(kāi)發(fā)效率。另外,就目前國(guó)內(nèi)的 JSP 開(kāi)發(fā)者而言,除了使用 JSP 自帶的常用標(biāo)記外,很少開(kāi)發(fā)自己的標(biāo)記,或許 Struts 是一個(gè)很好的起點(diǎn)。頁(yè)面導(dǎo)航.頁(yè)面導(dǎo)航將是今后的一個(gè)發(fā)展方向,事實(shí)上,這樣做,使系統(tǒng)的脈絡(luò)更加清晰。通過(guò)一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,這對(duì)于后期的維護(hù)有著4.5.6.的好處。尤其是當(dāng)另一批開(kāi)發(fā)者接手這個(gè)項(xiàng)目時(shí),這種優(yōu)勢(shì)體現(xiàn)得更加明顯。提供 Exception 處理機(jī)制 .數(shù)據(jù)庫(kù)池管理支持 I18Ne)缺點(diǎn):1、 轉(zhuǎn)到展示層時(shí),需要配置 forward,每一次轉(zhuǎn)到展示層,相信大多數(shù)都是直接轉(zhuǎn)到 jsp,而涉及到轉(zhuǎn)向

3、,需要配置 forward,如果有十個(gè)展示層的 jsp,需要配置十次 struts,而且還不包括有時(shí)候目錄、文件變更,需要重新修改 forward,注意,每次修改配置之后,要求重新部署整個(gè)項(xiàng)目,而 tomcate 這樣的服務(wù)器,還必須重新啟動(dòng)服務(wù)器,如果業(yè)務(wù)變更復(fù)雜頻繁的系統(tǒng),這樣的操作簡(jiǎn)單不可想象?,F(xiàn)在就是這樣,幾十上百個(gè)人同時(shí)使用的系統(tǒng),大家可以想象一下,煩惱有多大。2、 Struts 的 Action 必需是 threadsafe 方式,它僅僅允許一個(gè)實(shí)例去處理所有的請(qǐng)求。所以 action 用到的所有的資源都必需同步,這個(gè)就引起了線程安全。3、 測(cè)試不方便. Struts 的每個(gè) Ac

4、tion 都同 Web 層耦合在一起,這樣它的測(cè)試依賴(lài)于 Web 容器,單元測(cè)試也很難實(shí)現(xiàn)。不過(guò)有一個(gè) Junit 的擴(kuò)展工具 Struts TestCase 可以實(shí)現(xiàn)它的單元測(cè)試。4、 類(lèi)型的轉(zhuǎn)換. Struts 的 FormBean 把所有的數(shù)據(jù)都作為 String 類(lèi)型,它可以使用工具 Commons-Beanutils 進(jìn)行類(lèi)型轉(zhuǎn)化。但它的轉(zhuǎn)化都是在 Class 級(jí)別,而且轉(zhuǎn)化的類(lèi)型是不可配置的。類(lèi)型轉(zhuǎn)化時(shí)的錯(cuò)誤信息返回給用戶(hù)也是非常的。5、 對(duì) Servlet 的依賴(lài)性過(guò)強(qiáng). Struts 處理 Action 時(shí)必需要依賴(lài) ServletRequest 和ServletRespons

5、e,所有它擺脫不了 Servlet 容器。6、 前端表達(dá)式語(yǔ)言方面.Struts 集成了 JSTL,所以它主要使用 JSTL 的表達(dá)式語(yǔ)言來(lái)獲取數(shù)據(jù)。JSTL 的表達(dá)式語(yǔ)言在 Collection 和索引屬性方面處理顯得很弱。7、 對(duì) Action 執(zhí)行的控制. Struts 創(chuàng)建一個(gè) Action,如果想控制它的執(zhí)行順序?qū)?huì)非常。甚至你要重新去寫(xiě) Servlet 來(lái)實(shí)現(xiàn)你的這個(gè)功能需求。8、 對(duì) Action 執(zhí)行前和后的處理. Struts 處理 Action 的時(shí)候是基于 class 的hierarchies,很難在 action 處理前和后進(jìn)行操作。9、 對(duì)事件支持不夠. 在 stru

6、ts 中,實(shí)際是一個(gè)表單 Form 對(duì)應(yīng)一個(gè) Action 類(lèi)(或DispatchAction),換一句話(huà)說(shuō):在 Struts 中實(shí)際是一個(gè)表單只能對(duì)應(yīng)一個(gè)事件,struts 這種事件方式稱(chēng)為 application event,application event 和 component event 相比是一種粗粒度的事件。二、Spring 在項(xiàng)目中的作用a)Spring 是一個(gè)全方位的整合框架,在項(xiàng)目中對(duì) hibernate 和 struts 進(jìn)行整合,解決層與層之間的耦合問(wèn)題。b)c)Spring 的作用貫穿了整個(gè)中間層,將 Web 層、Service 層、層及 PO 無(wú)縫整合。Sprin

7、g 的 IoC 來(lái)實(shí)現(xiàn)組件之間的依賴(lài)關(guān)系注入,上層框架不會(huì)滲透到下層組件,提高組件移植性和重用性,使得程序更靈活,上層框架不依賴(lài)實(shí)現(xiàn)而是依賴(lài)于抽象(委托接口)、使得實(shí)現(xiàn)類(lèi)的變化不會(huì)影響上層組件,解決了層與層之間的藕合帶來(lái)的或升級(jí)d)SprinP 是面向切面編程,實(shí)現(xiàn)事務(wù)處理、日志服務(wù)等與業(yè)務(wù)無(wú)關(guān)的系統(tǒng)服務(wù),實(shí)現(xiàn)插件式編程。e)優(yōu)點(diǎn)它是一個(gè)開(kāi)源的項(xiàng)目,而且目前非?;钴S;它基于IoC(Inverof Control,控制反轉(zhuǎn))和 AOP(面向切面)的構(gòu)架多層j2ee 系統(tǒng)的框架,但它不強(qiáng)迫你必須在每一層中必須使用Spring,因?yàn)樗K化的很好,允許你根據(jù)自己的需要選擇使用它的某一個(gè)模塊;它實(shí)現(xiàn)了

8、很優(yōu)雅的 MVC,對(duì)不同的數(shù)據(jù)技術(shù)提供了的接口,采用 IoC 使得可以很容易的實(shí)現(xiàn) bean 的裝配,提供了簡(jiǎn)潔的 AOP 并據(jù)此實(shí)現(xiàn)TranscationManagment,等等a. Spring 能有效地組織你的中間層對(duì)象,不管你是否選擇使用了 EJB。如果你僅僅使用了 Struts 或其他為J2EE 的 API 特制的framework,Spring 致力于解決剩下。b. Spring 能消除在許多工程中常見(jiàn)的對(duì)Singleton 的過(guò)多使用。根據(jù)經(jīng)驗(yàn),這是一個(gè)很大,它降低了系統(tǒng)的可測(cè)試性和面象的程度。c. 通過(guò)一種在不同應(yīng)用程序和項(xiàng)目間一致的方法來(lái)處理配置文件,Spring 能消除各種

9、各樣自定義格式的屬性文件的需要。曾經(jīng)對(duì)某個(gè)類(lèi)要尋找的是哪個(gè)魔法般的屬性項(xiàng)或系統(tǒng)屬Javadoc 甚至源編碼?有了Spring,你僅僅需要看看類(lèi)的JavaBean 屬性。Inver到不解,為此不得不去讀of Control 的使用(在下面)幫助完成了這種簡(jiǎn)化。d. 通過(guò)把對(duì)接口編程而不是對(duì)類(lèi)編程的代價(jià)幾乎減少到?jīng)]有,Spring 能夠促進(jìn)養(yǎng)成好的編程。e. Spring 被設(shè)計(jì)為讓使用它創(chuàng)建的應(yīng)用盡可能少的依賴(lài)于他的 APIs。在 Spring 應(yīng)用中的大多數(shù)業(yè)務(wù)對(duì)象沒(méi)有依賴(lài)于Spring。f. 使用Spring 構(gòu)建的應(yīng)用程序易于單元測(cè)試。g. Spring 能使EJB 的使用成為一個(gè)實(shí)現(xiàn)選擇

10、,而不是應(yīng)用架構(gòu)的必然選擇。你能選擇用POJOs 或local EJBs來(lái)實(shí)現(xiàn)業(yè)務(wù)接口,卻不會(huì)影響調(diào)用代碼。h. Spring 幫助你解決許多問(wèn)題而無(wú)需使用EJB。Spring 能提供一種EJB 的替換物,它們適用于許多web 應(yīng)用。例如,Spring 能使用AOP 提供道,甚至不需要一個(gè)JTA 實(shí)現(xiàn)。性事務(wù)管理而不通過(guò)EJB 容器,如果你僅僅需要與單個(gè)數(shù)據(jù)庫(kù)打交i. Spring 為數(shù)據(jù)存取提供了一個(gè)一致的框架,不論是使用的是JDBC 還是 O/R map產(chǎn)品Spring 確實(shí)使你能通過(guò)最簡(jiǎn)單可行的解決辦法來(lái)解決你。而這是有有很大價(jià)值的。f)缺點(diǎn)jsp 中要寫(xiě)很多代碼、控制器過(guò)于靈活,缺少一

11、個(gè)公用控制器。三、Hibernate 在項(xiàng)目中的作用a)Hibernate 應(yīng)用于數(shù)據(jù)持久化層,是對(duì) JDBC 的輕量級(jí)封裝。是一種對(duì)象、關(guān)系的工具, 提供了從 Java 類(lèi)到數(shù)據(jù)表的,也提供了數(shù)據(jù)查詢(xún)和恢復(fù)等機(jī)制,的復(fù)雜度。把對(duì)數(shù)據(jù)庫(kù)的直接操作 , 轉(zhuǎn)換為對(duì)持久對(duì)象的操作。大大減少數(shù)據(jù)b)在項(xiàng)目中的主要作用就是 1、解決程序與數(shù)據(jù)庫(kù)的依賴(lài),即使用了 Hibernate 之后,以后更改數(shù)據(jù)庫(kù)不需要更改代碼,因?yàn)?Hibernate 會(huì)根據(jù)數(shù)據(jù)庫(kù)方言來(lái)生成對(duì)應(yīng)的SQL 語(yǔ)句;2、是對(duì) JDBC 的輕量級(jí)封裝,簡(jiǎn)化持久層的代碼,提高開(kāi)發(fā)速度。c)優(yōu)點(diǎn)Hibernate 是一個(gè)開(kāi)放源代碼的對(duì)象關(guān)系框

12、架,它對(duì)JDBC 進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來(lái)數(shù)據(jù)庫(kù)。Hibernate 可以應(yīng)用在任何使用JDBC 的場(chǎng)合,既可以在Java 的客戶(hù)端程序使用,也可以在Servlet/JSP的Web 應(yīng)用中使用,最具據(jù)持久化的重任。意義的是,Hibernate 可以在應(yīng)用EJB 的J2EE 架構(gòu)中取代CMP,完成數(shù)大多數(shù)開(kāi)發(fā)機(jī)構(gòu)經(jīng)常采取創(chuàng)建各自獨(dú)立的數(shù)據(jù)持久層。一旦底層的數(shù)據(jù)結(jié)構(gòu)發(fā)生改變,那么修改應(yīng)用的其余部分使之適應(yīng)這種改變的代價(jià)將是十分巨大的。Hibernate 適時(shí)的填補(bǔ)了這一空白,它為 Java 應(yīng)用提供了一個(gè)易用的、高效率的對(duì)象關(guān)系框架。hibernate 是個(gè)輕量級(jí)的持久性框架,功能卻非常豐富。1. Hibernate 使用 Java 反射機(jī)制而不是字節(jié)碼增強(qiáng)程序來(lái)實(shí)現(xiàn)透明性。2. Hibernate 的性能非常好,因?yàn)樗莻€(gè)輕量級(jí)框架。的靈活性很出色。3. 它支持各種關(guān)系數(shù)據(jù)庫(kù),從一對(duì)一到多對(duì)多的各種復(fù)雜關(guān)系d)缺點(diǎn)1、由于 Hibernate 實(shí)現(xiàn)了復(fù)雜的關(guān)系靈活。,并且進(jìn)行大量的封裝,所以對(duì)于復(fù)雜的查詢(xún)語(yǔ)句不是很2、它限制您所使用的對(duì)象模型。(例如,一個(gè)持久性類(lèi)不能到多個(gè)表),盡管如此,Hibernate 還是以其強(qiáng)大的發(fā)展動(dòng)力減輕了這些風(fēng)險(xiǎn)。其他的

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論