作者:baggio785
來源:http://blog.csdn.net/baggio785
原文地址:http://blog.csdn.net/baggio785/archive/2006/03/10/620535.aspx(轉載請注明出處)
日期:2006-3-9
關鍵詞:Eclipse,MyEclipse,Struts,Java
前言
本文根據實例詳細介紹了如果在Eclipse中配置并開發Struts。此前在網上也看到過不少此類文章,而且還是有不少網友問此類問題。所以想根據自己的實際經驗,并結合例子寫一篇詳細的文章,一個是方便大家,再一個也是檢驗一下自己的知識。
本文是偶的一些拙見,有不正確的地方請大家多多評論指正。
開發環境
JDK1_4_03,點擊下載
tomcat5.0.28,點擊下載
Eclipse3.1.2,點擊下載;下載中文包,中文包是3.1.1,但是也適用3.1.2
MyEcilpse4.1,點擊下載MyEcilpse4.1及破解補丁
TomcatPlugin插件,點擊下載TomcatPlugin插件
更多Eclipse插件下載,點擊進入
需求
本文所要結合的Struts應用實例為用戶登錄(logon),用戶登錄(logon)的需求為:
1??接收用戶名和密碼,跳轉到成功頁面,并提示“<username>歡迎您登錄!”。
2??如果用戶名為空就提交表單,則提示“請輸入用戶名!”。
3??如果密碼為空就提交表單,則提示“請輸入密碼!”。
4??如果輸入非法用戶名,則提示“請輸入正確的用戶名!”。
5??通過模型組件,保存登錄信息。
登錄應用實例的框架介紹
用戶登錄(logon)應用由以下模塊組成:
1??模型(M):模型為一個JAVABEAN組件-SaveLogon,包含username(用戶名)和userpassword(密碼)兩個屬性,提供讀取和設置屬性的方法get/set,以及保存登錄信息的方法saveToDb()。saveToDb的任務是把登錄信息保存到持久化存儲系統(例如數據庫)。
2??視圖(V):視圖包括兩個JSP文件,以及一個ActionForm Bean-logonForm。JSP文件分別為:logon.jsp、success.jsp。logon.jsp負責接受用戶輸入的用戶名和密碼以及顯示出錯信息,success.jsp負責顯示登錄成功信息。
3??控制器(C):控制器為Action類logonAction。對數據進行業務邏輯驗證、調用模型組件保存登錄信息、選擇視圖組件返回給用戶。
Struts的工作機制
用戶在視圖組件(logon.jsp)中輸入用戶名和密碼并提交HTML表單,Struts框架會先讀取WEB.XML中關于servlet的配置,然后自動將表單數據封裝到ActionForm Bean中,在本例中是logonForm。logonForm會對提交的數據進行數據合法性驗證(例如最短長度、是否包含非法字符等)。如果ActionForm Bean驗證未通過,則logonForm返回ActionErrors對象,Struts框架會把ActionErrors對象保存在request范圍內,并把請求轉發到視圖組件,并在視圖組件中通過<html:errors/>標簽,展示request范圍內的ActionErrors對象所包含的錯誤信息;如果通過ActionForm Bean驗證,則logonForm返回的ActionErrors對象為NULL,Struts框架將表單數據提交到控制器組件logonAction,控制器對表單數據進行業務邏輯驗證,如果logonAction驗證未通過,則創建包含錯誤信息的ActionMessages對象,并通過saveErrors方法把ActionMessages對象保存到request范圍內,并把請求轉發到視圖組件,并在視圖組件中通過<html:errors/>標簽,展示request范圍內的ActionErrors對象所包含的錯誤信息;如果logonAction驗證通過,則Struts框架訪問模型組件,然后Struts框架會返回ActionFoward對象,并根據Struts-config.xml文件的配置情況,決定將ActionFoward對象包含的轉發信息傳遞到那一個視圖組件。
部署Struts框架
Struts的工作機制大家都有了一定的了解了,現在介紹如何在Eclipse中部署Struts框架。
本文的環境前文已經提到,Eclipse以及其插件MyEclipse和TomcatPlugin的安裝本文不介紹,請參考其他文章。關于Eclipse的相關文章請看:
http://blog.csdn.net/baggio785/category/148174.aspx
。
1??? 新建一個項目
1)? 選擇Java >> Tomcat Project,下一步,如圖一
(圖一)
2)填寫項目名稱,如果不采用項目所在目錄的缺省值,請修改,點擊完成。如圖二
(圖二)
2??? 創建Struts框架
1)??? 右鍵選擇項目 >> 新建 >> 其他 >> MyEclipse >> Web-Struts >> Struts 1.2 >> Struts 1.2 Form,Action & JSP。如圖三。如果這一步出現錯誤,本文不做描述,請參考我的另一邊文章-MyEclipse中創建Struts出現錯誤的解決辦法。
(圖三)
2)??? 配置Struts ActionForm??
因為本文的Struts應用實例為用戶登錄,所以Use case選用logon。Superclass選擇如圖所示,其他默認。如圖四
(圖四)
接下來填寫Optional Details,輸入Form表單項,本例為用戶名(username)和密碼(userpassword)。點擊Add,輸入請參考圖五、圖六。
(圖五)
(圖六)
輸后完畢,Optional Details的Form Properties中會顯示。如圖七
(圖七)
Methods選項卡的設置我們采用默認設置,不去修改。
點擊JSP選項卡,將“Create JSP form”選項的勾選中,采用默認設置“/form/logon.jsp”。如圖八
(圖八)
3)??? 配置Struts Action
以上步驟完成了對Form的配置,下面配置Action。
在圖八中點擊下一步,采用默認即可。如圖九
(圖九)
Parameter和Methods選項也采用默認。
點擊Forwards選項卡,點擊Add,配置成功頁面信息。本文選取根目錄的success.jsp作為成功頁面,Name為logon_sc。如圖十
(圖十)
輸后完畢,Optional Details的Forwards中會顯示。如圖十一
(圖十一)
點擊完成。
Struts已經配置完畢。看看Eclipse中,項目中多了一些東東,例如struts相關的jar,以及struts-config.xml和tld文件。struts-config.xml的代碼如下:
代碼清單一(struts-config.xml)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "
<struts-config>
<data-sources />
<form-beans >
<!--這里是ActionForm的配置信息,ActionForm Bean的name為logonForm,對應的類為com.mystruts.struts.form.LogonForm-->
<form-bean name="logonForm" type="com.mystruts.struts.form.LogonForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<!--這里是Action組件的配置信息,描述了從特定的請求路徑到響應的Action的映射-->
<!--attribute設置Action關聯的ActionForm在request或者session范圍內的key.就是在request或者session共享內的名稱-->
<!--input指定包含表單的URL,當表單驗證失敗的時候發送的URL-->
<!--name指定和該Action關聯的Form名字.該名字必須是在form-bean中定義過的,可寫可不寫-->
<!--path指定請求訪問Action的路徑,必須以/開頭-->
<!--scope指定Form的存在范圍,例如request-->
<!--type指定Action組件對應的類-->
<action
attribute="logonForm"
input="/form/logon.jsp"
name="logonForm"
path="/logon"
scope="request"
type="com.mystruts.struts.action.LogonAction">
<!--這里是forward,即局部轉發配置信息,登錄成功后轉向/success.jsp,name為logon_sc-->
<forward
name="logon_sc"
path="/success.jsp"
/>
</action>
</action-mappings>
<!--這里是消息資源文件的配置信息,用來配置Resource Bundle.用于存放本地文本消息文件。parameter指定文件名,不包含后綴名。-->
<message-resources parameter="com.mystruts.struts.ApplicationResources" />
</struts-config>
|