摘 要:介紹Struts 2由來(lái)和核心思想,并分析其主要特點(diǎn),指出它們?cè)谟檬蚣芗砷_(kāi)發(fā)中所具有的優(yōu)勢(shì)以及基本流程和相關(guān)配置。其最終目的是希望提高系統(tǒng)底層業(yè)務(wù)邏輯的可塑性,增加系統(tǒng)的可擴(kuò)展性,從而降低系統(tǒng)維護(hù)的成本。
關(guān)鍵詞:電子商務(wù);Struts 2;作用
中圖分類(lèi)號(hào):F49文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3198(2012)03-0233-02
1 Struts 2的由來(lái)
隨著軟件技術(shù)和Internet的迅猛發(fā)展,以J2EE技術(shù)體系為代表的分布式對(duì)象技術(shù)為企業(yè)構(gòu)造新的基于Internet的電子商務(wù)平臺(tái)提供了技術(shù)支持。J2EE規(guī)范定義了一個(gè)用于簡(jiǎn)化分布式企業(yè)級(jí)應(yīng)用開(kāi)發(fā)與部署的基于組件的模式,它提供了一個(gè)多層次的分布式應(yīng)用模型和一系列開(kāi)發(fā)技術(shù)規(guī)范,為搭建具有可伸縮性、靈活性、易維護(hù)性的電子商務(wù)系統(tǒng)提供了良好的機(jī)制。隨著J2EE技術(shù)的不斷完善和發(fā)展,有幾種開(kāi)源免費(fèi)的框架出現(xiàn)在J2EE設(shè)計(jì)中,這些新出現(xiàn)的框架為中小企業(yè)提供了一個(gè)經(jīng)濟(jì)的、快速開(kāi)發(fā)布署的、穩(wěn)定而可擴(kuò)展的可行方案,使得他們可以使用開(kāi)源技術(shù)來(lái)構(gòu)建企業(yè)級(jí)應(yīng)用。其中,Struts就是比較優(yōu)秀的開(kāi)源框架。
Struts 1是第一個(gè)發(fā)布的MVC框架,它由Apache開(kāi)源軟件聯(lián)盟提供的用于構(gòu)建JavaWeb應(yīng)用程序的框架,該框架推出后,就得到了廣泛Java Web開(kāi)發(fā)者的擁護(hù),經(jīng)過(guò)長(zhǎng)達(dá)6年時(shí)間的發(fā)展,Struts 1框架更加成熟、穩(wěn)定,性能也有了很好的保證。因此,到目前為止,Struts 1依然是世界上使用最廣泛的MVC框架。但是由于些設(shè)計(jì)上的缺陷成為它未來(lái)發(fā)展的障礙。為了給Java Web開(kāi)發(fā)人員提供一個(gè)更好的框架,提出了Struts 2的新模式。Struts 2雖基于Struts 1發(fā)展,但并不是以Struts 1為核心,而是采用Web Work為核心,尤其是吸收了Struts 1和 Web Work兩者的優(yōu)勢(shì)。
2 Struts 2的核心思想
Struts目前已經(jīng)分化為兩個(gè)框架:第一個(gè)框架是shale,此框架可以說(shuō)幾乎脫離了Struts的設(shè)計(jì)思想,它不僅僅是對(duì)Struts的升級(jí),而是另辟空間發(fā)展。第二個(gè)就是Struts 2框架,Struts 2的核心設(shè)計(jì)思想是基于Web work框架基礎(chǔ)上發(fā)展的,它的特點(diǎn)是兼容struts 1和Web work兩種框架,并且取長(zhǎng)補(bǔ)短的開(kāi)發(fā)理念,開(kāi)發(fā)中兼顧了struts 1的部分優(yōu)點(diǎn),同時(shí)注入了Web work的思想。Struts 2的體系結(jié)構(gòu)同樣也實(shí)現(xiàn)了MVC設(shè)計(jì)模式的概念,它將這些概念映射到Web應(yīng)用程序的組件和概念中。Struts 2是使用Servlet和Java Server Pages技術(shù)的一種MVC實(shí)現(xiàn),而MVC是用來(lái)控制Web項(xiàng)目中的變化,提高項(xiàng)目的復(fù)用性和可維護(hù)性,所以應(yīng)用Struts 2框架就是用來(lái)改進(jìn)在目前Web開(kāi)發(fā)中存在的不足之處。Struts 2繼承了MVC的各項(xiàng)特性,并根據(jù)J2EE的特點(diǎn),做了相應(yīng)的變化與擴(kuò)展。圖1是Struts 2的MVC體系結(jié)構(gòu)圖。
Struts 2技術(shù)框架所具有的很多特性使得它非常適合作為Web系統(tǒng)的應(yīng)用開(kāi)發(fā)過(guò)程中。主要特點(diǎn)如下:
①Struts 2大量使用攔截器來(lái)處理用戶(hù)請(qǐng)求,從而允許用戶(hù)的業(yè)務(wù)邏輯控制器與Servlet API分離。
②Struts 2是一個(gè)雅致的,可擴(kuò)展的,用來(lái)建立企業(yè)級(jí)Java Web應(yīng)用程序的框架。
③Struts 2不但注重程序的開(kāi)發(fā)過(guò)程,更注重部署和后期維護(hù)。
④Struts 2來(lái)源于Web Work 2。
⑤Struts 2融合了Struts和Web Work的社區(qū)力量,是這兩個(gè)社區(qū)努力的結(jié)果。
⑥Struts 2非常容易使用。
⑦Struts 2最大可能的保留了和Struts 1.x的相似行。
(2)Struts 2的體系結(jié)構(gòu)。
Struts 2使用攔截器作為處理(Advice),以用戶(hù)的業(yè)務(wù)邏輯控制器為目標(biāo),創(chuàng)建一個(gè)控制器代理??刂破鞔碡?fù)責(zé)處理用戶(hù)請(qǐng)求,處理用戶(hù)請(qǐng)求時(shí)回調(diào)業(yè)務(wù)控制器的execute方法,該方法的返回值將決定了Struts 2將怎樣的視圖資源呈現(xiàn)給用戶(hù)。
由于客戶(hù)端瀏覽器初始化一個(gè)指向Servlet容器的請(qǐng)求;然后Struts 2的核心控制器FilterDispatcher接受客戶(hù)發(fā)來(lái)的請(qǐng)求,進(jìn)行相應(yīng)的判斷調(diào)用指定的Action操作;攔截器對(duì)請(qǐng)求啟用相應(yīng)功能;接下來(lái)ActionInvocation實(shí)例使用命名模式來(lái)回調(diào)Action的execute方法,該execute方法先獲取用戶(hù)請(qǐng)求參數(shù),然后它會(huì)調(diào)用業(yè)務(wù)邏輯組件來(lái)處理用戶(hù)的請(qǐng)求;最后將execute方法的處理結(jié)果返回到客戶(hù)端的瀏覽器中完成處理過(guò)程。
(3)Struts 2的組成及配置。
Struts 2框架主要由三個(gè)部分組成:核心控制器FilterDispatcher、業(yè)務(wù)控制器和用戶(hù)實(shí)現(xiàn)的業(yè)務(wù)邏輯組件。Struts 2框架只提供了核心控制器部分的功能,而業(yè)務(wù)控制器和用戶(hù)實(shí)現(xiàn)的業(yè)務(wù)邏輯組件功能需要程序開(kāi)發(fā)人員獨(dú)立完成。
由于Struts 2的核心與Struts 1有著本質(zhì)的區(qū)別,也就決定了Struts 2的配置與Struts1有一定的區(qū)別。我們需要加載Struts 2框架那么應(yīng)該首先在Web.xml文件中加載前面提到的核心控制器FilterDispatcher,這樣控制器會(huì)加載Struts 2框架。
Struts 2框架有兩個(gè)核心配置文件,其中struts.xml文件主要負(fù)責(zé)管理應(yīng)用中的Action映射,以及該Action包含的Result定義等。在原始狀態(tài)下,Struts 2框架將默認(rèn)的路徑下是加載放在Web-INF/classes的struts.xml文件。但是由于在Web應(yīng)用中,隨著系統(tǒng)的需求,各個(gè)功能模塊不斷增加修改等,系統(tǒng)中Action數(shù)量會(huì)越來(lái)越繁多,如果我們選擇默認(rèn)的struts.xml配置文件,那么整個(gè)文件會(huì)變得非常繁雜,不利于后期維護(hù)。為了避免struts.xml文件過(guò)十繁雜,提高struts.xml文件的可讀性,我們將struts.xml分解成多個(gè)配置文件,然后在struts.xml文件中包含其他配置文件。解決這一問(wèn)題可以用include方式導(dǎo)入各個(gè)功能模塊的文件。當(dāng)然也可以根據(jù)用戶(hù)自己需要來(lái)劃分,本系統(tǒng)采用的是按模塊劃分。
Struts 2框架包含的另一個(gè)核心文件是struts.properties,該文件定義了Struts 2框架的屬性,我們可以設(shè)置相應(yīng)屬性來(lái)達(dá)到開(kāi)發(fā)程序的需求。Struts.properties文件是一個(gè)標(biāo)準(zhǔn)的Properties文件,該文件包含了系列的key-value對(duì)象,每個(gè)key就是一個(gè)Struts 2屬性,該key對(duì)應(yīng)的value就是一個(gè)Struts 2屬性值。struts.properties文件通常放在Web應(yīng)用的Web-INF/classes路徑下。實(shí)際上,只要將該文件放在Web應(yīng)用的CLASSPATH路徑下,Struts 2框架就可以加載該文件。
3 總結(jié)
隨著網(wǎng)絡(luò)信息技術(shù)的發(fā)展,網(wǎng)絡(luò)應(yīng)用在人們?nèi)粘I钪性絹?lái)越受到重視,人們?cè)絹?lái)越希望在較短的時(shí)間內(nèi)買(mǎi)到自己所需要的東西。但是市場(chǎng)上的商品種類(lèi)很多,人們要想購(gòu)買(mǎi)到自己需要的商品,不得不花費(fèi)很多時(shí)間,給購(gòu)買(mǎi)帶來(lái)了麻煩。網(wǎng)上購(gòu)物系統(tǒng)彌補(bǔ)了傳統(tǒng)購(gòu)物的許多不足之處,有效地縮短了傳統(tǒng)購(gòu)物過(guò)程中的流通環(huán)節(jié),有著經(jīng)營(yíng)成本低、庫(kù)存虛擬,用戶(hù)查看商品方便,減少了地域限制等特點(diǎn)。Struts 2是現(xiàn)今開(kāi)發(fā)技術(shù)中運(yùn)用最廣泛的開(kāi)源框架技術(shù)之一。Struts 2框架具有組件的模塊化,靈活性和重用性的優(yōu)點(diǎn),同時(shí)簡(jiǎn)化了基于MVC的Web應(yīng)用程序的開(kāi)發(fā)。
參考文獻(xiàn)
[1]徐明華,邱加永.Struts基礎(chǔ)與案例開(kāi)發(fā)詳解[M].北京:清華大學(xué)出版社,2009.
[2]黃金雪.基于Struts和Hibernate的框架模型在銀行信貸管理系統(tǒng)的研究[D].成都:西南交通大學(xué),2008.
[3]郭梅,江紅.Struts在實(shí)現(xiàn)MVC架構(gòu)中的應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2004,(1):2834.
[4]許鑫,費(fèi)祥林.基于MVC模式的應(yīng)用軟件開(kāi)發(fā)框架研究[J].計(jì)算機(jī)工程與應(yīng)用,2005:41(30):102-104.
[5]Struts官方網(wǎng)站[EB/OL].http://struts.apache.org/,201.