在本系列的的第一篇中
我們大致浏覽了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 ActionMapping為整個應用確定的
線路圖
在配置文件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
type=
com
oreilly
actions
LoginAction
name=
loginForm
scope=
request
input=
/Login
jsp
>
success path=/Welcomejsp/>
failure path=/Loginjsp/>
mappings>
在前一篇文章中我們曾說過strutsconfigxml就是MVC模式的的Controller在確定strutsconfigxml中的配置信息時應該多花些時間精力在上面以保證每一個Action定義及其相關定義是符合應用的需求的如果在項目開始沒有詳細的設計其定義當將所有代碼和配置集成到一起的時候我們將不可避免的將各部分的代碼和配置完全重新組織一遍
我們當前的例子StrusSample因為只是處理用戶登錄所以只需要一個Action一個應用系統中所要用到的Action的多少完全依應用的大小而定一旦整套Action的映射完全的定義出來後我們就可以一個一個開發其具體實現的Action和ActionForm類並逐漸將完成的部分一點一點集成起來
由設計完成的用戶界面開發其所用到的類和應用函數
所有ActionForm的實現類都是orgapachestrutsActionForm的子類一個ActionForm是與頁面上的輸入表單相關聯的而且ActionForm的實現還可以對用戶輸入數據的合法性進行驗證作為一個Java BeanActionForm有Set和Get方法當一個頁面中表單被提交時系統將自動調用Set方法將數據放入ActionForm中而Get方法將為在Action中操作這些數據所提供一般來說處理表單中的所有數據並進行合法性驗證都完全可以交由ActionForm來完成在應用中就我個人而言傾向於將ActionForm和Action劃分到不同的包中因為當一個頁面中要用到幾對ActionFrom和Action時都放在一個包內會混淆的下面的代碼就是實例中登錄頁面用到的ActionForm的代碼
<
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27982.html