王昊
(東北農(nóng)業(yè)大學(xué)成棟學(xué)院,黑龍江哈爾濱150030)
Struts2是一款擴(kuò)展性很強(qiáng)的框架,它是由Strut開發(fā)團(tuán)隊(duì)和WebWork團(tuán)隊(duì)合作,共同開發(fā)的一個(gè)新的產(chǎn)品,新版本的Struts2更加容易使用,更加接近Struts2所追求的理念。從開發(fā)、部署到維護(hù)中效率的提高。
Struts2以WebWork優(yōu)秀的設(shè)計(jì)思想為核心,吸收了Struts1的部分優(yōu)點(diǎn),建立了一個(gè)兼容WebWork和Struts1的MVC框架。在使用上與Struts1有著很大的不同,更接近WebWork的使用習(xí)慣,因?yàn)镾truts2使用了WebWork的設(shè)計(jì)核心而不是Struts1的設(shè)計(jì)核心。Struts1與WebWork的優(yōu)勢(shì)互補(bǔ)使得Struts2擁有著更加廣闊的前景。不僅Struts2自身更加強(qiáng)大,還對(duì)其他框架下開發(fā)的程序提供了很好的兼容性。
新建JAVA WEB項(xiàng)目,選擇Struts2資源中l(wèi)ib下的jar文件,添加到項(xiàng)目,并在項(xiàng)目的“JAVA構(gòu)建路徑”中添加引用。
在項(xiàng)目中添加Struts2的支持后,就可以使用Struts2框架開發(fā)WEB應(yīng)用程序了。
實(shí)現(xiàn)過程如下:
第一步,創(chuàng)建login.jsp頁面,主要內(nèi)容如下:
用戶名:
密  碼:
第二步,創(chuàng)建LoginAction類。用于對(duì)用戶的請(qǐng)求做出處理,對(duì)于開發(fā)人員使用Struts2框架,主要是的編碼工作就是編寫處理請(qǐng)求的Action類,Action類通常都實(shí)現(xiàn)com.opensymphony.xwork.Action接口,并實(shí)現(xiàn)該接口中的execute()方法,Struts2中,所有的Action必須返回一個(gè)字符串類型的結(jié)果代碼。
import com.opensymphony.xwork2.Action;
public class LoginAction implements Action{
private String username;//產(chǎn)生其get/set系列方法private Stringpassword;//產(chǎn)生其get/set系列方法public String execute()throws Exception{
return"success";
}
}
在Struts2中,可以直接使用Action類中的username屬性來接收用戶的輸入,通過Struts2的數(shù)據(jù)綁定機(jī)制,傳遞username請(qǐng)求參數(shù),其實(shí)等同于調(diào)用LoginAction的setUserName方法。
第三步,修改項(xiàng)目的配置文件web.xml,將全部請(qǐng)求定位到指定的Struts2過渡器中。
第四步,創(chuàng)建Struts2的配置文件,在src目錄下創(chuàng)建Struts.xml文件。
在Struts2配置文件中,package元素用于定義Struts2處理請(qǐng)求的邏輯單元,name屬性為必需的并且唯一,用來指定包的名稱;ex?tends屬性類似Java的extends關(guān)鍵字,用于指定要擴(kuò)展的包。ac?tion元素用于配置Struts2框架的“工作單元”Action類,action元素將一個(gè)請(qǐng)求的URl(action的名字)對(duì)應(yīng)到一個(gè)Action類,name屬性是必須的,用來表示action的名字,class屬性可選用于設(shè)定Action類的全限定名。Result元素用來設(shè)定Action類處理結(jié)束后,系統(tǒng)下一步將要做什么,name屬性表示result的邏輯名,用于與Action類返回的字符串進(jìn)行匹配,result元素的值用來指定這個(gè)結(jié)果對(duì)應(yīng)的實(shí)際資源的位置。
最后一步,編譯部署并啟動(dòng)服務(wù)器,訪問login.jsp頁面。
至此,已經(jīng)基于Struts2的應(yīng)用程序的實(shí)現(xiàn)。
Struts2應(yīng)用的執(zhí)行流程為:瀏覽器發(fā)出login.action請(qǐng)求至服務(wù)器,Tomcat接收后,根據(jù)web.xml的配置,將請(qǐng)求發(fā)送給指定的Struts2過濾器,該過濾器根據(jù)struts.xml的配置內(nèi)容,將請(qǐng)求發(fā)送給LoginAction類的對(duì)象,并調(diào)用默認(rèn)的execute方法。然后根據(jù)execute方法的返回,匹配到login的結(jié)果,完成向login.jsp頁面的跳轉(zhuǎn)。頁面根據(jù)上下文中的內(nèi)容,進(jìn)行頁面的處理及顯示。