Struts Framework是一種基于Java的技術(shù),Web應用程序開(kāi)發(fā)人員通過(guò)Struts Framework即可充分利用面向對象設計、代碼重用以及"編寫(xiě)一次、到處運行"的優(yōu)點(diǎn)。Struts提供了一種創(chuàng )建Web應用程序的框架,其中對應用程序的顯示、表示和數據的后端代碼進(jìn)行了抽象。
Struts最早于2002年5月作為Jakarta項目的組成部分問(wèn)世,Jakata項目由Apache Foundation.運做。項目的創(chuàng )立者希望改進(jìn)和提高Java Server Pages (JSPs)、servlet、標簽庫以及面向對象的技術(shù)水準。在鉆研Struts之前你應該比較熟悉JSP、Java編程和一定的設計模式,尤其應該了解MVC(Model-View-Controller:模型、視圖和控制器)軟件程序架構。學(xué)習Struts一開(kāi)始會(huì )比較難,一旦理解了這一技術(shù)你將發(fā)現自己掌握了一種開(kāi)發(fā)大規模Web應用程序的設計利器。
![]() |
Struts是對MVC設計模式的一種實(shí)現。MVC設計模式為構建可擴展、可重用的代碼打下了一個(gè)堅實(shí)的基礎。MVC設計模式最吸引人之處在于它迫使你必須抽象自己的代碼,把項目分解為表示、邏輯和控制三部分,它們的作用正如一個(gè)交響樂(lè )團中的音樂(lè )、團員和指揮。
MVC設計模式中的"模型"指的是真正完成任務(wù)的代碼。對大多Web應用程序來(lái)說(shuō),功能比界面感覺(jué)更重要。在模型同界面相分離的情況下,代碼即可實(shí)現可管理性和可重用性。比方說(shuō),假如你開(kāi)發(fā)了一個(gè)保險應用程序,其中的"模型"就是處理要求、計算保險費和同數據庫交互的那些代碼。模型通常也被稱(chēng)做"業(yè)務(wù)邏輯"。
所謂的"視圖"其實(shí)就是界面。在MVC模式下,通常的設計前提是界面任務(wù)并不大。當然,視圖應該具有一定的功能性并遵守可用性的約束,但視圖(界面)不應當處理數據。事實(shí)上,界面的每一部分都只能包含采集數據的足夠邏輯并把它傳遞給設計模式中的其他組成部分供處理。從理論上說(shuō),如果你在模型中實(shí)現全部業(yè)務(wù)邏輯那么你可以創(chuàng )建多個(gè)視圖,也就是桌面應用程序、數據庫系統或者Web應用程序的界面。由于所有最麻煩的工作代碼都保存在了模型上,所以創(chuàng )建新的視圖并不令人感到過(guò)分的痛苦,產(chǎn)生軟件編碼錯誤的可能性也就隨之大大降低了。
"控制器"控制著(zhù)模型和視圖之間的交互過(guò)程。它決定著(zhù)向用戶(hù)返回怎樣的視圖、檢查通過(guò)界面輸入的信息以及選擇處理輸入信息的模型。
在介紹了MVC之后,現在我們就下載Struts Framework、了解Struts采用MVC設計技術(shù)的原理。
Struts Framework 可以從Jakarta項目的網(wǎng)站上獲取。目前可用的代碼版本還是1.0,但該版本是穩定和成熟的版本。同Apache Foundation維護的其他項目一樣,Struts Framework是一種開(kāi)放源代碼軟件,所以你可以獲得軟件源代碼親自編譯程序或者直接下載二進(jìn)制版本。大多數用戶(hù)并不需要源代碼,但知道它的存在也不是壞事,說(shuō)不定以后就用得著(zhù)。
Struts分派版隨帶了眾多示例,所有這些示例都打包為WAR文件(Web Application Archive)供部署在應用服務(wù)器上。假如你想用Struts創(chuàng )建自己的應用程序,那么你會(huì )在Struts庫目錄下找到所有你需要的東西。在這個(gè)目錄下有個(gè)JAR文件包含了所有的框架源代碼和標簽庫的全部定義。在創(chuàng )建新應用程序的時(shí)候需要把這些文件拷到WEB-INF目錄下供部署用。將來(lái)我們會(huì )撰文討論如何完成這些工作,目前你僅需要知道它們都放在什么地方就可以了。
現在我們就看看Struts Framework是如何采用MVC模式來(lái)創(chuàng )建Web應用程序的。
視圖
Struts采用JSP作為MVC的視圖。每一視圖都是采用了定制標簽庫的JSP頁(yè)面,這些定制標簽庫則由Struts Framework提供。全部表單元素都是用定制標簽編碼的,所以這些頁(yè)面能夠很方便地同控制器交互。每一個(gè)表單都通過(guò)映射JSP到servlet的請求這一方式指向控制器的特定入口點(diǎn)。
控制器
控制器就是Java servlet,由Struts Framework提供,負責視圖和模型之間的交互??刂破鞯拿總€(gè)入口點(diǎn)都由名為struts-config.xml的配置文件設置。該文件把來(lái)自視圖的請求映射為特定的java類(lèi)以進(jìn)行相應的處理??刂破鬟€指定下一個(gè)視圖的位置。
模型
Java beans就是模型的代表。對進(jìn)入控制器的每個(gè)入口點(diǎn)來(lái)說(shuō),bean的作用是存儲從視圖獲取的信息,同時(shí)被稱(chēng)為"行動(dòng)類(lèi)"一種Java類(lèi)則被指定為對表單輸入采取行動(dòng)。行動(dòng)類(lèi)(action class)實(shí)現了業(yè)務(wù)邏輯。
以上介紹了Struts Framework同MVC之間的關(guān)系,接下來(lái)的第二部分則引領(lǐng)讀者用Struts創(chuàng )建應用程序。
聯(lián)系客服