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

用Struts建立MVC應用的介紹

2013-11-23 20:09:22  來源: Java開源技術 

  .Model 和Model 簡介
  
  我們在開發Web應用時經常提到的一個概念是Model /Model 那麼到底它是什麼意思呢?其實它是對采用JSP技術構成Web應用的不同模型的描述下面對這個概念做一個簡單的介紹
  
  Model
  
  在使用JAVA技術建立Web應用的實例中由於JSP技術的發展很快這種便於掌握和可實現快速開發的技術就成了創建Web應用的主要技術JSP頁面中可以非常容易地結合業務邏輯(jsp:useBean)服務端處理過程(jsp:scriplet)和HTML()在JSP頁面中同時實現顯示業務邏輯和流程控制從而可以快速地完成應用開發現在很多的Web應用就是由一組JSP頁面構成的這種以JSP為中心的開發模型我們可以稱之為Model
  
  當然這種開發模式在進行快速和小規模的應用開發時是有非常大的優勢但是從工程化的角度考慮它也有一些不足之處
  
   應用的實現一般是基於過程的一組JSP頁面實現一個業務流程如果要進行改動必須在多個地方進行修改這樣非常不利於應用擴展和更新
  
   由於應用不是建立在模塊上的 業務邏輯和表示邏輯混合在JSP頁面中沒有進行抽象和分離所以非常不利於應用系統業務的重用和改動
  
  考慮到這些問題在開發大型的Web應用時必須采用不同的設計模式――這就是Model
  
  Model
  
  Model 表示的是基於MVC模式的框架MVC是Model-View-Controller的簡寫Model 代表的是應用的業務邏輯(通過JavaBeanEJB組件實現) View 是應用的表示面(由JSP頁面產生)Controller 是提供應用的處理過程控制(一般是一個Servlet)通過這種設計模型把應用邏輯處理過程和顯示邏輯分成不同的組件實現這些組件可以進行交互和重用從而彌補了Model 的不足
  
  Model 具有組件化的優點從而更易於實現對大規模系統的開發和管理但是開發MVC系統比簡單的JSP開發要復雜許多它需要更多的時間學習和掌握同時新東西的引入會帶來新的問題(這讓我想起來關於自動計算的一篇文章中間提到為了降低系統的復雜度卻導致更高的復雜度)
  
   必須基於MVC組件的方式重新思考和設計應用結構原來通過建立一個簡單的JSP頁面就能實現的應用現在變成了多個步驟的設計和實現過程
  
   所有的頁面和組件必須在MVC框架中實現所以必須進行附加地開發工作
  
  MVC本身就是一個非常復雜的系統所以采用MVC實現Web應用時最好選一個現成的MVC框架在此之下進行開發從而取得事半功倍的效果現在有很多可供使用的MVC框架由於Struts有完整的文檔並且相對來講比較簡單所以用它開發MVC系統還是比較方便地
  
  .Struts的結構和處理流程簡介
  
  Struts是Apache組織的一個項目像其他的Apache組織的項目一樣它也是開放源碼項目Struts是一個比較好的MVC框架提供了對開發MVC系統的底層支持它采用的主要技術是ServletJSP和custom tag library獲取它的使用版本和具體信息可以查閱網站
  
  Struts框架的基本構成由下圖所示
  
 

  
struts uml圖

  
  作為一個MVC的框架Struts對ModelView和Controller都提供了對應的實現組件對應上面的UML圖分別進行介紹並且看看它們是如何結合在一起的
  
   Controller控制器的作用是從客戶端接受請求並且選擇執行相應的業務邏輯然後把響應結果送回到客戶端在Struts中Controller功能由圖中ActionServlet和ActionMapping對象構成核心是一個Servlet類型的對象ActionServlet它用來接受客戶端的請求ActionServlet包括一組基於配置的ActionMapping對象每個ActionMapping對象實現了一個請求到一個具體的Model部分中Action處理器對象之間的映射
   Model MVC系統中的Model部分從概念上可以分為兩類――系統的內部狀態和改變系統狀態的動作Struts為Model部分提供了Action和ActionForm對象所有的Action處理器對象都是開發者從Struts的Action類派生的子類Action處理器對象封裝了具體的處理邏輯調用業務邏輯模塊並且把響應提交到合適的View組件以產生響應Struts提供的ActionForm組件對象它可以通過定義屬性描述客戶端表單數據開發者可以從它派生子類對象利用它和Struts提供的自定義標記庫結合可以實現對客戶端的表單數據的良好封裝和支持Action處理器對象可以直接對它進行讀寫而不再需要和requestresponse對象進行數據交互通過ActionForm組件對象實現了對View和Model之間交互的支持Struts通常建議使用一組JavaBean表示系統的內部狀態根據系統的復雜度也可以使用像Entity EJB 和 Session EJB等組件來實現系統狀態Struts建議在實現時把做什麼(Action)和如何做(業務邏輯)分離這樣可以實現業務邏輯的重用
   ViewStruts應用中的View部分是通過JSP技術實現的Struts提供了自定義的標記庫可以使用通過這些自定義標記可以非常好地和系統的Model部分交互通過使用這些自定義標記創建的JSP表單可以實現和Model部分中的ActionForm的映射完成對用戶數據的封裝同時這些自定義標記還提供了像模板定制等多種顯示功能
  
  Struts框架的處理流程清楚的體現了MVC系統的特點簡單的Struts組件結構如圖所示Struts Controller ActionServlet處理客戶請求利用配置的ActionMapping對象把請求映射到Action處理器對象進行處理Action處理對象訪問ActionForm中的數據處理和響應客戶請求它還調用後台的Bean組件這些組件封裝了具體的業務邏輯Action處理器對象根據處理結果通知ControllerController進行下一步的處理
  

  
Struts框架的組件結構圖

  
  .利用Struts框架開發MVC系統要做的工作
  
  由於Struts已經為我們提供了一個非常好的MVC框架我們利用Struts開發MVC系統時可以大大加快開發的速度在開發時可以采用的一個開發流程如下(引自資料
  
   收集和定義應用需求
   基於數據采集和顯示的原則定義和開發屏幕顯示需求
   為每一個屏幕顯示定義訪問路徑
   定義ActionMappings建立到應用業務邏輯之間的聯系
   開發滿足屏幕顯示需求的所有支持對象
   基於每一個屏幕顯示需求提供的數據屬性來創建對應的ActionForm對象
   開發被ActionMapping調用的Action對象
   開發應用業務邏輯對象 (BeanEJB等等)
   對應ActionMapping設計的流程創建JSP頁面
   建立合適的配置文件strutsconfigxml webxml
   開發/測試/部署
  
  具體在使用Struts框架時對應各個部分的開發工作主要包括
  
   Model部分采用JavaBean和EJB組件設計和實現系統的業務邏輯根據不同的請求從Action派生具體Action處理對象完成做什麼的任務來調用由Bean構成的業務組件創建由ActionForm 的派生類實現對客戶端表單數據的封裝
   Controller部分Struts為我們提供了核心控制部分的實現我們只需要配置ActionMapping對象
   View部分為了使用Model中的ActionForm 對象我們必須用Struts提供的自定義標記創建HTML 表單利用Struts提供的自定義標記庫編寫用戶界面把應用邏輯和顯示邏輯分離Struts框架通過這些自定義標記建立了View和Model之間的聯系Struts的自定義標記還提供了很多定制頁面的功能
   同時需要編輯兩個配置文件webxml和strutsconfigxml通過它們配置Struts系統中的各個模塊之間的交互下面對這兩個配置文件做一些介紹
  
  webxml文件的配置
  
  web應用中的webxml是第一個要配置的地方它描述了系統的Controller對象在webxml中增加如下標記
  
  
  action
  orgapachestrutsactionActionServlet
  
  

  application


  ······
  

  
  說明這個servlet對象就是Struts提供的Controller還可以為它指定初始化參數比如對系統應用屬性的支持
  
  
  action
  *do
  
  
  說明實現客戶請求的url信息和服務器端具體處理的映射關系
  
  
  /WEBINF/strutsbeantld
  /WEBINF/strutsbeantld
  

  ·······
  
  說明添加對Struts提供的應用所使用的自定義標記庫的引用
  
  strutsconfigxml文件的配置
  
  strutsconfigxml是用於建立Controller和Model之間的關系的它描述了Controller所使用的把請求對應到具體處理的法則同時它還描述了客戶提供的數據與ActionForm組件的對應映射關系
  
  在strutsconfigxml中增加如下標記
  
  
  
  

  
  說明標記描述一個具體的ActionForm子類對象通過它和J
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28029.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.