本文是三篇學習Struts框架系列文章的第二篇
在本系列的的第一篇中
我們大致浏覽了Struts框架
框架的功能以及框架中應用到的各個模塊
而本文
我將利用Struts
為大家演示建立一個簡單的應用
在第三篇文章中將介紹如何利用Struts的標簽在JSP中訪問ApplicationResource文件中的信息
我們在這篇文章將會一步一步的講解Struts的應用
以這樣的形式打開Struts一道道神秘的大門
通過這樣的過程
相信也能激起你在應用開發中如何應用Struts的靈感
如果你對Struts的一些術語不是很清楚的話
可以參考本系列前一篇對Struts作大體介紹的文章
再次重復一遍
本文需要讀者有如下幾方面的知識和經驗
JSP
Servlets
自定義標簽庫(Custom Tag libraries)和XML
此外
在本文中
我還會用到Jakarta項目組其他一些好東東
比如Tomcat(實現Java Servlet和JSP官方標准的Servlet容器
通俗的講就是一個JSP的Web Server啦)和Ant(基於Java的自動編譯發布工具
這可是好東東啊)
作為一名一直使用前沿技術開發了諸多應用的技術人員
我一直堅信掌握新技術
理解該技術開發的邏輯是至關重要的
但這往往就是陷住我們學習步伐的泥潭
正因如此
我打算將利用Struts開發的一套完整流程作為我們教學的案例
該流程的這個案例可謂
麻雀雖小
五髒據全
你完全可以將這個流程應用到你手頭那些復雜龐大的項目中
至少在我們的大項目中應用這個流程效果不錯
有開發復雜商業應用的開發人員都知道
客戶的需求總是在不停變幻
所以如果有一套規范的開發流程來遵循
當客戶提出新的需求時
我們至少可以明確哪些
無理
需求其實是合理可行的
好
接下裡我將在我的這個例子中向各位展示和應用整個流程
本文中的示例代碼是StrutsSample應用中的一部分
包括build
xml的完整代碼可以到此處下載
Struts開發過程 從Struts發布的版本號可以看出
Struts是個新玩意
她有好幾個部分組成
明智的你如果搞清楚了何時該開發完成合適的部分
那將會更好的利用我們的開發時間
從我所開發的幾個利用Struts應用中
我大致總結出如下這個比較有效的開發步驟
明確應用需求
由用戶輸入和獲取數據的角度出發
明確和設計出每一個用戶界面
確定用戶界面的進入路徑
由應用邏輯信息確定動作映射表(ActionMapping)
由設計完成的用戶界面開發其所用到的類和應用函數
由用戶界面中的數據信息開發ActionForm和相應的數據校驗方法
ActionMapping中將會被調用相應的Action或轉到相應的JSP頁面
這一步我們先開發這些Action
開發商業應用邏輯
就是相應的JavaBean
EJB或其他東東
開發由ActionMapping定義的系統工作流程完成對應的JSP頁面
完成系統配置文件
struts
config
xml和web
xml
編譯/測試/發布
明確應用需求 開發任何應用系統的第一步就是收集用戶需求信息
不管一個用戶邏輯初看上去多麼合理
但總有可能在開發時才發現它比看上去要難得多
所以
建議擬一份明確的用戶需求列表
這不只是出於開發的目的
還能通過該表分析用戶需求以確定哪些地方可能需要花更多的精力
在我們這個StrutsSample項目中
應用需求就是
作為一個展示Struts框架應用的完整例子
本示例完成的功能是用戶登錄
目的只為明確Struts的應用
本示例將不會涉及到一般復雜應用系統中可能應用的安全
數據庫
EJB開發等等相關技術
設計用戶界面 這個應用中
包括如下三個用戶界面
)登錄界面
用於用戶名和密碼輸入
)當登錄用戶為合法用戶時的歡迎界面
)當登錄失敗時的錯誤提示界面
確定用戶界面的進入路徑
)登錄界面作為這個應用的默認頁面
)歡迎界面只有當成功登錄後才能進入
)任何可能發生錯誤的頁面能可以進入錯誤提示界面
由應用邏輯信息確定ActionMapping ActionMap昀三篇學????本文是三篇學習Struts框架系列文章的第二篇
在本系列的的第一篇中
我們大致浏覽了Struts框架
框架的功能以及框架中應用到的各個模塊
而本文
我將利用Struts
為大家演示建立一個簡單的應用
在第三篇文章中將介紹如何利用Struts的標簽在JSP中訪問ApplicationResource文件中的信息
我們在這篇文章將會一步一步的講解Struts的應用
以這樣的形式打開Struts一道道神秘的大門
通過這樣的過程
相信也能激起你在應用開發中如何應用Struts的靈感
如果你對Struts的一些術語不是很清楚的話
可以參考本系列前一篇對Struts作大體介紹的文章
再次重復一遍
本文需要讀者有如下幾方面的知識和經驗
JSP
Servlets
自定義標簽庫(Custom Tag libraries)和XML
此外
在本文中
我還會用到Jakarta項目組其他一些好東東
比如Tomcat(實現Java Servlet和JSP官方標准的Servlet容ping為整個應用確定的
線路圖
在配置文件struts
config
xml對ActionMapping進行定義
通過轉發請求(forward)來理順應用的處理流程
確定應用中每個用戶請求對應的動作
通常我們在開發過程中就逐步確定了ActionMapping所需的信息
開發代碼的過程就是在由草稿開始一步步完善struts
config
xml的過程
當Action類處理完用戶請求後
其返回的的forward就是在ActionMapping中定義的一個
一個Action返回的forward完全有多種可能
盡管一個Action一般只定義其相關的幾個forward
那麼
如果有多個Action都可能返回的同一個forward
那麼就可以將其定義為全局轉發(global forward)
這類似於C中的頭文件中全局變量
如果在struts
config
xml描述信息中
某一個forward並不是在當前Action描述中定義的而是全局定義的
那麼這個全局的將起作用
同樣
一個Action中當前定義的forward將覆蓋全局定義
在我們所給的這個簡單實例中
我們定義了全局forward――
error
當某Action返回的forward是
error
這個映射
那麼Errorpage
jsp頁面將會顯示給用戶
盡管當前Action並沒有對其定義
我們繼續不斷的開發
項目日漸完善
項目相關的配置文件也會越來越詳細
在下面的例子中
我們將以StrutsSample中用到的struts
confug
xml文件為例
學習global forward和一個Action中相關映射的定義
下面定義了一個名為
login
的Action
其為com
oreilly
actions
LoginAction的實例
當Action處理用戶登錄成功後將一個名為
success
的forward返回
用戶也就會看到Welcome
jsp頁面
如果登錄失敗
Action將返回對應的forward以再顯示Login
jsp給用戶
而如果處理過程中發生其他錯誤
Action將返回全局定義的forward――
error
用戶也就會看到錯誤提示頁面Errorpage
jsp
<!
========== Global Forward 定義
>
<global
forwards>
<forward name=
login
path=
/Login
jsp
/>
<forward name=
error
path=
/Errorpage
jsp
/>
</global
forwards>
<!
========== Action Mapping 定義
>
<action
mappings>
<!
<action>元素的相關屬性
>
<!
以下只列出常用屬性
其他請參考org
apache
struts
action
ActionMapping的相關文檔
path
當前Action對應的用戶請求URI路徑
type
實現當前Action的Java class的完整名字
name
當前Action中用到的ActionForm的名字
其具體信息在配置文件其他地方另有詳細定義
unknown
如果將該屬性設置為true
那麼就是聲明這個Action將處理整個應用中所有未找到相應處理Action的請求
當然
一個應用系統中也只會有一個Action的unknown屬性可以設為true
scope
Action中所用到的ActionForm的生存期
可以為
request
或
session
隨著生存期的設置
該Action也會在相應的時間被創建
input
該Action中相關ActionForm獲取用戶輸入的輸入頁面
當將ActionForm設為自動驗證輸入數據
發現不合法數據返回錯誤時
將返回該頁面
validate
如果本屬性為true則在Action動作之前其對應的ActionForm的validate方法會自動被調用
一般用以驗證用戶輸入的數據
forward 元素
定義當前Action相關的ActionForward
>
<!
===================
>
<!
O
Reilly Struts Sample Main Actions
>
<!
===================
>
<action path=
/login
type=
com
oreilly
actions
LoginAction
name=
loginForm
scope=
request
input=
/Login
jsp
>
<forw昀三篇學??? ?ard name=
success
path=
/Welcome
jsp
/>
<forward name=
failure
path=
/Login
jsp
/>
</action>
</action
mappings>
在前一篇文章中
我們曾說過
struts
config
xml就是MVC模式的的Controller
在確定struts
config
xml中的配置信息時
應該多花些時間精力在上面
以保證每一
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28481.html