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

Jakarta Struts學習之應用實踐

2013-11-23 20:26:00  來源: Java開源技術 

  本文是三篇學習Struts框架系列文章的第二篇在本系列的的第一篇中我們大致浏覽了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 ActionMap昀三篇學????本文是三篇學習Struts框架系列文章的第二篇在本系列的的第一篇中我們大致浏覽了Struts框架框架的功能以及框架中應用到的各個模塊而本文我將利用Struts 為大家演示建立一個簡單的應用在第三篇文章中將介紹如何利用Struts的標簽在JSP中訪問ApplicationResource文件中的信息 我們在這篇文章將會一步一步的講解Struts的應用以這樣的形式打開Struts一道道神秘的大門通過這樣的過程相信也能激起你在應用開發中如何應用Struts的靈感如果你對Struts的一些術語不是很清楚的話可以參考本系列前一篇對Struts作大體介紹的文章
  
  再次重復一遍本文需要讀者有如下幾方面的知識和經驗JSPServlets自定義標簽庫(Custom Tag libraries)和XML此外在本文中我還會用到Jakarta項目組其他一些好東東比如Tomcat(實現Java Servlet和JSP官方標准的Servlet容ping為整個應用確定的線路圖在配置文件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
  
  <! ========== Global Forward 定義 >
  <globalforwards>
  <forward name=login path=/Loginjsp/>
  <forward name=error path=/Errorpagejsp/>
  </globalforwards>
  
  <! ========== Action Mapping 定義 >
  <actionmappings>
  <! <action>元素的相關屬性 >
  <!
  
  以下只列出常用屬性其他請參考orgapachestrutsactionActionMapping的相關文檔
  
  path 當前Action對應的用戶請求URI路徑
  
  type 實現當前Action的Java class的完整名字
  
  name 當前Action中用到的ActionForm的名字其具體信息在配置文件其他地方另有詳細定義
  
  unknown 如果將該屬性設置為true那麼就是聲明這個Action將處理整個應用中所有未找到相應處理Action的請求當然一個應用系統中也只會有一個Action的unknown屬性可以設為true
  
  scope Action中所用到的ActionForm的生存期可以為requestsession隨著生存期的設置該Action也會在相應的時間被創建
  
  input 該Action中相關ActionForm獲取用戶輸入的輸入頁面當將ActionForm設為自動驗證輸入數據發現不合法數據返回錯誤時將返回該頁面
  
  validate 如果本屬性為true則在Action動作之前其對應的ActionForm的validate方法會自動被調用一般用以驗證用戶輸入的數據
  
  forward 元素 定義當前Action相關的ActionForward
  
  >
  <! =================== >
  <! OReilly Struts Sample Main Actions >
  <! =================== >
  <action path=/login
  type=comoreillyactionsLoginAction
  name=loginForm
  scope=request
  input=/Loginjsp>
  <forw昀三篇學??? ?ard name=success path=/Welcomejsp/>
  <forward name=failure path=/Loginjsp/>
  </action>
  </actionmappings>
  
  在前一篇文章中我們曾說過strutsconfigxml就是MVC模式的的Controller在確定strutsconfigxml中的配置信息時應該多花些時間精力在上面以保證每一
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28481.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.