熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Jakarta Struts簡介(二)

2013-11-23 20:07:53  來源: Java開源技術 

  在本系列的的第一篇中我們大致浏覽了Struts框架框架的功能以及框架中應用到的各個模塊而本文我將利用Struts 為大家演示建立一個簡單的應用在第三篇文章中將介紹如何利用Struts的標簽在JSP中訪問ApplicationResource文件中的信息
  我們在這篇文章將會一步一步的講解Struts的應用以這樣的形式打開Struts一道道神秘的大門通過這樣的過程相信也能激起你在應用開發中如何應用Struts的靈感如果你對Struts的一些術語不是很清楚的話可以參考本系列前一篇對Struts作大體介紹的文章
  再次重復一遍本文需要讀者有如下幾方面的知識和經驗JSPServlets自定義標簽庫(Custom Tag libraries)和XML此外在本文中我還會用到Jakarta項目組其他一些好東東比如Tomcat(實現Java Servlet和JSP官方標准的Servlet容器通俗的講就是一個JSP的Web Server啦)和Ant(基於Java的自動編譯發布工具這可是好東東啊)
  作為一名一直使用前沿技術開發了諸多應用的技術人員我一直堅信掌握新技術理解該技術開發的邏輯是至關重要的但這往往就是陷住我們學習步伐的泥潭正因如此我打算將利用Struts開發的一套完整流程作為我們教學的案例該流程的這個案例可謂麻雀雖小五髒據全你完全可以將這個流程應用到你手頭那些復雜龐大的項目中至少在我們的大項目中應用這個流程效果不錯
  有開發復雜商業應用的開發人員都知道客戶的需求總是在不停變幻所以如果有一套規范的開發流程來遵循當客戶提出新的需求時我們至少可以明確哪些無理需求其實是合理可行的接下裡我將在我的這個例子中向各位展示和應用整個流程
  本文中的示例代碼是StrutsSample應用中的一部分包括buildxml的完整代碼可以到此處下載
  
  Struts開發過程
  從Struts發布的版本號可以看出Struts是個新玩意她有好幾個部分組成明智的你如果搞清楚了何時該開發完成合適的部分那將會更好的利用我們的開發時間從我所開發的幾個利用Struts應用中我大致總結出如下這個比較有效的開發步驟
  明確應用需求
  由用戶輸入和獲取數據的角度出發明確和設計出每一個用戶界面
  確定用戶界面的進入路徑
  由應用邏輯信息確定動作映射表(ActionMapping)
  由設計完成的用戶界面開發其所用到的類和應用函數
  由用戶界面中的數據信息開發ActionForm和相應的數據校驗方法
  ActionMapping中將會被調用相應的Action或轉到相應的JSP頁面這一步我們先開發這些Action
  開發商業應用邏輯就是相應的JavaBeanEJB或其他東東
  開發由ActionMapping定義的系統工作流程完成對應的JSP頁面
  完成系統配置文件strutsconfigxml和webxml
  編譯/測試/發布
  
  明確應用需求
  開發任何應用系統的第一步就是收集用戶需求信息不管一個用戶邏輯初看上去多麼合理但總有可能在開發時才發現它比看上去要難得多所以建議擬一份明確的用戶需求列表這不只是出於開發的目的還能通過該表分析用戶需求以確定哪些地方可能需要花更多的精力
  在我們這個StrutsSample項目中應用需求就是
  作為一個展示Struts框架應用的完整例子本示例完成的功能是用戶登錄目的只為明確Struts的應用本示例將不會涉及到一般復雜應用系統中可能應用的安全數據庫EJB開發等等相關技術
  
  設計用戶界面
  這個應用中包括如下三個用戶界面
  )登錄界面用於用戶名和密碼輸入
  )當登錄用戶為合法用戶時的歡迎界面
  )當登錄失敗時的錯誤提示界面
  
  確定用戶界面的進入路徑
  )登錄界面作為這個應用的默認頁面
  )歡迎界面只有當成功登錄後才能進入
  )任何可能發生錯誤的頁面能可以進入錯誤提示界面
  
  由應用邏輯信息確定ActionMapping
  ActionMapping為整個應用確定的線路圖在配置文件strutsconfigxml對ActionMapping進行定義通過轉發請求(forward)來理順應用的處理流程確定應用中每個用戶請求對應的動作
  通常我們在開發過程中就逐步確定了ActionMapping所需的信息開發代碼的過程就是在由草稿開始一步步完善strutsconfigxml的過程當Action類處理完用戶請求後其返回的的forward就是在ActionMapping中定義的一個一個Action返回的forward完全有多種可能盡管一個Action一般只定義其相關的幾個forward那麼如果有多個Action都可能返回的同一個forward那麼就可以將其定義為全局轉發(global forward)這類似於C中的頭文件中全局變量如果在strutsconfigxml描述信息中某一個forward並不是在當前Action描述中定義的而是全局定義的那麼這個全局的將起作用同樣一個Action中當前定義的forward將覆蓋全局定義在我們所給的這個簡單實例中我們定義了全局forward――error當某Action返回的forward是error這個映射那麼Errorpagejsp頁面將會顯示給用戶盡管當前Action並沒有對其定義
  我們繼續不斷的開發項目日漸完善項目相關的配置文件也會越來越詳細在下面的例子中我們將以StrutsSample中用到的strutsconfugxml文件為例學習global forward和一個Action中相關映射的定義下面定義了一個名為login的Action其為comoreillyactionsLoginAction的實例當Action處理用戶登錄成功後將一個名為success的forward返回用戶也就會看到Welcomejsp頁面如果登錄失敗Action將返回對應的forward以再顯示Loginjsp給用戶而如果處理過程中發生其他錯誤Action將返回全局定義的forward――error用戶也就會看到錯誤提示頁面Errorpagejsp
  
  
  
  
  
  

  
  
  
  
  
  
  
  
  
    type=comoreillyactionsLoginAction
  name=loginForm
  scope=request
  input=/Loginjsp>
  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
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.