Jakarta-Struts是Apache軟件組織提供的一項(xiàng)開放源代碼項(xiàng)目,它為Java Web應(yīng)用提供了模型-視圖-控制器(MVC)框架,尤其適用于開發(fā)大型可擴(kuò)展的Web應(yīng)用. Struts為Web應(yīng)用提供了一個通用的框架,使得開發(fā)人員可以把精力集中在如何解決實(shí)際業(yè)務(wù)問題上. 此外,Struts框架提供了許多可供擴(kuò)展和定制的地方使得應(yīng)用程序可以方便的擴(kuò)展框架,來更好的適應(yīng)用戶的實(shí)際需求. 本文是一篇介紹利用MyEclipse進(jìn)行Struts開發(fā)的基礎(chǔ)教程,通過詳細(xì)的描述和大量的圖片來展現(xiàn)Struts開發(fā)的具體過程. 這里所采用的是我們經(jīng)常會遇到的用戶登陸的實(shí)例,如果用戶登陸成功進(jìn)入程序的主界面(main.jsp),否則返回登陸頁面并提示錯誤信息. n 創(chuàng)建Web項(xiàng)目
在菜單中依次點(diǎn)擊File→New→Project,然后在彈出的窗口中選擇J2EE→Web Project,啟動Web項(xiàng)目創(chuàng)建向?qū)А?/span> 點(diǎn)擊下一步,在項(xiàng)目名稱中,我們輸入StrutsDemo,然后修改Context root URL為/hello,其他我們使用默認(rèn)的設(shè)置,最后點(diǎn)擊Finish按鈕完成創(chuàng)建工作. 在項(xiàng)目創(chuàng)建后,我們需要讓它支持Struts功能. 在菜單中選擇MyEclipse→Add Struts Capabilities. 在彈出的對話框中, 將Struts specification修改為1.2,將Base package for new classes修改為我們喜歡的包名,如com.study.struts,修改完成后點(diǎn)擊Finish按鈕. 在Package Explore中,我們可以看到增加了Struts能力后,MyEclipse在Web項(xiàng)目中增加了很多jar文件和tld文件,請參考下圖: n 創(chuàng)建JSP文件
在我們的登陸程序中一共需要兩個JSP文件. 一個是index.jsp,作為用戶登陸的界面和登陸失敗后的返回界面. 一個是main.jsp,作為登陸成功后的主界面. 在Package Explore中雙擊struts-config.xml將其打開,在源代碼窗口中點(diǎn)擊左側(cè)工具欄中的 ,在彈出的JSP文件創(chuàng)建向?qū)е行薷奈募麨?/span>index.jsp,選擇5]Standard JSP using Struts 1.2 with a form模板,然后點(diǎn)擊Finish按鈕. MyEclipse會為我們創(chuàng)建一個名為index.jsp的帶一個Form的JSP文件. 按照同樣的方法創(chuàng)建main.jsp. 由于我們只是簡單的在主界面中顯示成功登陸的信息,因此在創(chuàng)建的時候,我們選擇的是第一個缺省的模板. JSP文件創(chuàng)建后,我們可以根據(jù)自己的需要來修改其中的內(nèi)容. 對于index.jsp,我們修改Form的action屬性和提交參數(shù)的名字, 并增加了<html:error>標(biāo)簽,可參考下面的代碼: <%@ page language="java"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
對于main.jsp,我們修改<body>中的輸出信息,提示用戶登陸成功,代碼如下: <body>
You have logged in!<br>
</body>
保存兩個JSP文件和struts-config.xml文件. n 創(chuàng)建ActionForm
在我們的登陸程序中需要用戶提交用戶名和密碼,因此我們需要創(chuàng)建一個ActionForm Bean來保存提交的HTML表單數(shù)據(jù). 將源代碼窗口中的標(biāo)簽切換到struts-config.xml,右上角的Outline窗口內(nèi)容如下: 選中其中的form-beans,右鍵單擊,在彈出的菜單中選擇New Form. 在Form Bean創(chuàng)建向?qū)υ捒蛑?/span>,輸入Use case的名字login,然后在下方的Form Properties中增加name和password兩個屬性.(注意本例子暫時不設(shè)置validate方法和reset方法)
n 創(chuàng)建Action
在完成上面的創(chuàng)建后,我們接下來創(chuàng)建Action類. 在源代碼窗口中切換到struts-config.xml文件,點(diǎn)擊左側(cè)工具欄中的 在對話框的下部Optional Details中,點(diǎn)擊Name行末的Browse按鈕,選中我們剛才創(chuàng)建的loginForm. 點(diǎn)擊Input Source行末的Browse按鈕,在彈出的對話框中選中index.jsp. 將Optional Details標(biāo)簽切換到Forwards,點(diǎn)擊Add按鈕增加一個局部的Forward. 這里的success是我們給Forward的名字,你也可以使用其它你喜歡的名字. 增加后如下: 完成新建Action的設(shè)置后如下圖: 點(diǎn)擊Finish按鈕后,MyEclipse會為我們創(chuàng)建一個名叫LoginAction.java的文件,我們可以根據(jù)自己的需要來實(shí)現(xiàn)具體的驗(yàn)證邏輯. 這里,我們僅僅通過登陸的名字是否為hello來判斷. 如果不是提示登陸失敗. 修改LoginAction的excute方法如下: public ActionForward execute(
LoginForm loginForm = (LoginForm) form; String username=loginForm.getName();
if(username.equals("hello")) { return mapping.findForward("success"); } else { errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("error.msg")); saveErrors(request,errors); return (new ActionForward(mapping.getInput())); }
從上面的代碼中我們可以看到,當(dāng)用戶登陸失敗后會使用一個鍵值為error.msg的ActionError. 因此,我們在Package Explore中找到ApplicationResources.properties文件并雙擊打開,輸入以下內(nèi)容并保存. error.msg=Login Failed 在完成了上述所有的工作后,我們可以看到圖示化的struts-config.xml如下: n 部署和測試應(yīng)用程序
這里StrutsDemo的部署同其他的Web應(yīng)用程序一樣,我們就不在贅述了,具體的方法可以參閱我的上一篇文章“利用MyEclipse進(jìn)行Web開發(fā)” 部署成功后,在IE的地址欄中輸入http://localhost:8080/hello/index.jsp并回車. 我們首先驗(yàn)證登陸失敗的場景. 當(dāng)我們輸入的用戶名不是hello時,應(yīng)返回到登陸頁面并提示登陸失敗. 在Name中輸入abcd,點(diǎn)擊Submit按鈕. 我們可以看到又回到了登陸頁面,并且出現(xiàn)了Login Failed的提示信息. 修改用戶名為hello,然后點(diǎn)擊Submit按鈕.
完. |
|