日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入理解Struts2

發(fā)布時(shí)間:2024/4/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入理解Struts2 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡單介紹

??Struts 2是Struts的下一代產(chǎn)品。是在 struts 1和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并的全新的Struts 2框架。

其全新的Struts 2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)區(qū)別巨大。Struts 2以WebWork為核心。採用攔截器的機(jī)制來處理用戶的請求,這種設(shè)計(jì)也使得業(yè)務(wù)邏輯控制器能夠與ServletAPI全然脫離開,所以Struts 2能夠理解為WebWork的更新產(chǎn)品。盡管從Struts 1到Struts 2有著太大的變化。但是相對于WebWork,Struts 2的變化非常小。

? 不管從struts2的設(shè)計(jì)角度看,還是從struts2在實(shí)際項(xiàng)目中的易用性來看,struts2都是一個(gè)非常優(yōu)秀的mvc框架。

與struts1相比,struts2同意使用使用普通的Java對象作為action,給予aop思想的爛機(jī)器機(jī)制,提供了幾號的可擴(kuò)展性。

mvc思想及其優(yōu)勢

? mvc并非Java語言所特有的設(shè)計(jì)思想,也并非web應(yīng)用所特有的思想,他是全部面向?qū)ο蟪绦蛟O(shè)計(jì)語言都應(yīng)遵循的規(guī)范。mvc是一種設(shè)計(jì)模式,將應(yīng)用分為三層:model、view、controller。這三層以最少的耦合協(xié)同工作,從而提高應(yīng)用的可擴(kuò)展及可維護(hù)性。

? 從設(shè)計(jì)模式角度來看,mvc非常相似于觀察者模式,但與觀察者模式存在少許的區(qū)別:觀察者模式下的觀察者和被觀察者能夠是兩個(gè)互相對等的對象。但對于mvc思想而言,被觀察者往往僅僅是單純的數(shù)據(jù)體。而觀察者則是單純的視圖頁面。

mvc的特點(diǎn)

? 多格式圖相應(yīng)一個(gè)模型。

? 模型返回的數(shù)據(jù)與現(xiàn)實(shí)邏輯分離。

? 應(yīng)用被切割為三層,減少了隔層之間的耦合性。

? 控制層吧不同的模型和不同的視圖組合在一起,完畢不同的請求。

? 符合軟件project化管理的精神。

struts2的工作流程

配置步驟

? 1.web.xml文件里定義核心filter來攔截用戶請求。

? 2.假設(shè)須要以post方式提交請求,則定義包括表單數(shù)據(jù)的JSP頁面。假設(shè)僅僅僅僅是以get方式發(fā)送請求。則無需經(jīng)過這一步。

? 3.定義處理用戶請求的action類。

? 4.配置action。

? 5.配置處理結(jié)果和物理視圖資源之間的相應(yīng)關(guān)系。

? 6.編寫資源視圖

工作流程

?

優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

? 1. 實(shí)現(xiàn)MVC模式,結(jié)構(gòu)清晰,使開發(fā)人員僅僅關(guān)注業(yè)務(wù)邏輯的實(shí)現(xiàn).

? 2. 有豐富的tag能夠用 ,Struts的標(biāo)記庫(Taglib),如能靈活動(dòng)用,則能大大提高開發(fā)效率。

另外,就眼下國內(nèi)的JSP開發(fā)人員而言,除了使用JSP自帶的經(jīng)常使用標(biāo)記外,非常少開發(fā)自己的標(biāo)記,也許Struts是一個(gè)非常好的起點(diǎn)。

? 3. 頁面導(dǎo)航.頁面導(dǎo)航將是今后的一個(gè)發(fā)展方向,其實(shí),這樣做。使系統(tǒng)的脈絡(luò)更加清晰。

通過一個(gè)配置文件,就可以把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,這對于后期的維護(hù)有著莫大的優(yōu)點(diǎn)。

尤其是當(dāng)還有一批開發(fā)人員接手這個(gè)項(xiàng)目時(shí),這種優(yōu)勢體現(xiàn)得更加明顯。

? 4. 提供Exception處理機(jī)制 .

? 5. 數(shù)據(jù)庫鏈接池管理
? 6. 支持I18N

缺點(diǎn):?

? 1. 轉(zhuǎn)到展示層時(shí)。須要配置forward。每一次轉(zhuǎn)到展示層,相信大多數(shù)都是直接轉(zhuǎn)到j(luò)sp,而涉及到轉(zhuǎn)向,須要配置forward,假設(shè)有十個(gè)展示層的jsp,須要配置十次struts,并且還不包括有時(shí)候文件夾、文件變更。須要又一次改動(dòng)forward。注意。每次改動(dòng)配置之后。要求又一次部署整個(gè)項(xiàng)目,而tomcate這種server。還必須又一次啟動(dòng)server。假設(shè)業(yè)務(wù)變更復(fù)雜頻繁的系統(tǒng)。這種操作簡單不可想象。如今就是這樣。幾十上百個(gè)人同一時(shí)候在線使用我們的系統(tǒng),大家能夠想象一下,我的煩惱有多大。

? 2.Struts 的Action必需是thread-safe方式,它僅僅同意一個(gè)實(shí)例去處理全部的請求。所以action用到的全部的資源都必需統(tǒng)一同步,這個(gè)就引起了線程安全的問題。
? 3. 測試不方便. Struts的每一個(gè)Action都同Web層耦合在一起,這樣它的測試依賴于Web容器,單元測試也非常難實(shí)現(xiàn)。

只是有一個(gè)Junit的擴(kuò)展工具Struts TestCase能夠?qū)崿F(xiàn)它的單元測試。


? 4.類型的轉(zhuǎn)換. Struts的FormBean把全部的數(shù)據(jù)都作為String類型。它能夠使用工具Commons-Beanutils進(jìn)行類型轉(zhuǎn)化。但它的轉(zhuǎn)化都是在Class級別,并且轉(zhuǎn)化的類型是不可配置的。類型轉(zhuǎn)化時(shí)的錯(cuò)誤信息返回給用戶也是非常困難的。
? 5.對Servlet的依賴性過強(qiáng). Struts處理Action時(shí)必須要依賴ServletRequest 和ServletResponse,全部它擺脫不了Servlet容器。


? 6.前端表達(dá)式語言方面.Struts集成了JSTL,所以它主要使用JSTL的表達(dá)式語言來獲取數(shù)據(jù)。

但是JSTL的表達(dá)式語言在Collection和索引屬性方面處理顯得非常弱。


? 7. 對Action運(yùn)行的控制困難. Struts創(chuàng)建一個(gè)Action,假設(shè)想控制它的運(yùn)行順序?qū)浅@щy。

甚至你要又一次去寫Servlet來實(shí)現(xiàn)你的這個(gè)功能需求。


? 8.對Action 運(yùn)行前和后的處理. Struts處理Action的時(shí)候是基于class的hierarchies。非常難在action處理前和后進(jìn)行操作。
? 9.對事件支持不夠. 在struts中,實(shí)際是一個(gè)表單Form相應(yīng)一個(gè)Action類(或DispatchAction)。換一句話說:在Struts中實(shí)際是一個(gè)表單僅僅能相應(yīng)一個(gè)事件,struts這種事件方式稱為application event。application event和component event相比是一種粗粒度的事件。

?

? 不論什么一種技術(shù)的誕生都有其優(yōu)缺點(diǎn),在項(xiàng)目中依據(jù)實(shí)際情況選擇性使用,文章中有不足之處。請大家批評指正。

轉(zhuǎn)載于:https://www.cnblogs.com/cxchanpin/p/7001129.html

總結(jié)

以上是生活随笔為你收集整理的深入理解Struts2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。