struts2(2.0.9)(學(xué)習(xí)一)HelloWorld篇
本文參考struts-當(dāng)你提交一個(gè)HTML表單到這個(gè)框架中的時(shí)候,輸入并不是被發(fā)送到服務(wù)頁,而是被發(fā)送到你提供的Java類,這些類被稱為Action。在這些Action執(zhí)行完后,選擇某一個(gè)資源來呈現(xiàn)返回結(jié)果,這個(gè)資源一般是頁面,但也可以是PDF文件,或者是Excel文件,亦或是Java applet窗口。
假設(shè)你想要?jiǎng)?chuàng)建一個(gè)“Hello World”的例子來呈現(xiàn)歡迎信息,在你準(zhǔn)備好開發(fā)環(huán)境后,為了創(chuàng)建一個(gè)“Hello World”的例子,你需要做如下三件事情:
1. 創(chuàng)建一個(gè)jsp頁面來呈現(xiàn)歡迎信息;
2. 創(chuàng)建一個(gè)Action類來創(chuàng)建信息;
3. 在配置文件中配置action和頁面的映射關(guān)系。
注意:為了創(chuàng)建這個(gè)組件,我們將工作流分成幾乎無人不曉的三部分:視圖、模型和控制器。分離這三部分的原因是當(dāng)系統(tǒng)變得越來月復(fù)雜的時(shí)候,我們能夠更好的管理。
一. 準(zhǔn)備工作
建立web工程,其中工程名為tutorial,在WebRoot下引入struts2的lib下的如下4個(gè)包:
commons-logging-1.1.jar
freemarker-
ognl-
struts2-core-
xwork-
在web.xml文件中增加struts2的FilterDispatcher,修改后的web.xml如下:




















二. 代碼
首先,我們需要一個(gè)jsp頁面來呈現(xiàn)信息,HelloWorld.jsp頁面代碼如下所示:











接著,我們需要一個(gè)Action類來創(chuàng)建信息,代碼如下:


























第三步,我們需要在配置文件中進(jìn)行相應(yīng)配置來將兩者聯(lián)系起來。讓我們編輯src下的struts.xml文件,該文件內(nèi)容如下:












代碼已經(jīng)完成,讓我們來嘗試運(yùn)行它。部署該應(yīng)用程序并打開http://localhost:8080/tutorial/HelloWorld.action,我們可以看到標(biāo)題欄為:Hello World,并且顯示“Struts is up and running!”的頁面呈現(xiàn)在我們面前。
三. 代碼是如何工作的?
你的瀏覽器向Web服務(wù)器發(fā)送了的http://localhost:8080/tutorial/HelloWorld.action(注:tutorial為部署在Tomcat中的的項(xiàng)目名稱)的URL請(qǐng)求后,服務(wù)器做了如下工作:
1. 容器接收到了Web服務(wù)器對(duì)資源HelloWorld.action的請(qǐng)求,根據(jù)web.xml中的配置,服務(wù)器將包含有.action后綴的請(qǐng)求轉(zhuǎn)到org.apache.struts2.dispatcher.FilterDispatcher類進(jìn)行處理。這個(gè)FilterDispatcher是框架的一個(gè)進(jìn)入點(diǎn);
2. 框架在struts.xml配置文件中找到名為HelloWorld的action對(duì)應(yīng)的類。框架初始化該Action并且執(zhí)行該Action類的execute方法;
3. execute方法將信息放入message變量中,并返回成功。框架檢查配置以查看當(dāng)返回成功時(shí)對(duì)應(yīng)的頁面。框架告訴容器來獲得請(qǐng)求返回的結(jié)果頁面HelloWorld.jsp;
4. 在HelloWorld.jsp執(zhí)行完后,<s:property value="message" />標(biāo)簽調(diào)用HelloWorld的Action類中的getMessage方法來獲得message的值,并將合并了值的頁面呈現(xiàn)給用戶;
5. 一個(gè)純粹的HTML頁面顯示在用戶的瀏覽器上。
四. 測(cè)試Action
測(cè)試Action很簡(jiǎn)單,以下是上述HelloWorld的Action類的測(cè)試類的代碼:



















五. 需要記住的東西
本框架利用Action來處理HTML的表單以及其余請(qǐng)求。Action返回一個(gè)結(jié)果的名字字符串,例如SUCCESS、ERROR以及INPUT等,從struts.xml中獲取映射信息。一個(gè)給定的結(jié)果字符串將選擇一個(gè)頁面或其他資源(圖片或PDF)來返回給用戶。
當(dāng)一個(gè)jsp被載入的時(shí)候,通常有一些動(dòng)態(tài)變化的元素需要Action來載入。為了更加容易的顯示動(dòng)態(tài)數(shù)據(jù),本框架提供了一些可以跟HTML配合使用的標(biāo)簽。
六. 問題匯總
對(duì)于出現(xiàn)啟動(dòng)失敗,例如Cannot locate the chosen ObjectFactory implementation: spring等錯(cuò)誤的朋友,請(qǐng)仔細(xì)檢查你引入的包。關(guān)于需引入的包,請(qǐng)參見第一節(jié)(準(zhǔn)備工作)。也希望遇到其余問題的朋友留言或發(fā)Email給我,在此進(jìn)行匯總。
posted @ 2007-08-20 09:23 井底之蛙 閱讀(292) | 評(píng)論 (0) | 編輯 收藏