Java教程 基于MVC模式的Struts框架研究與應用_第1頁
Java教程 基于MVC模式的Struts框架研究與應用_第2頁
Java教程 基于MVC模式的Struts框架研究與應用_第3頁
Java教程 基于MVC模式的Struts框架研究與應用_第4頁
Java教程 基于MVC模式的Struts框架研究與應用_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Java教程 基于MVC模式的Struts框架研究與應用(1)2007年09月09日 星期日 下午 07:01摘要: Struts框架具有組件的模塊化,靈活性和重用性的優(yōu)點,同時簡化了基于MVC的web應用程序的開發(fā)。本文討論了Struts框架實現MVC模式的原理與方法,給出了一個具體的應用實例。分布式企業(yè)應用軟件結構復雜、涉及多種技術,對設計開發(fā)人員提出了很高的要求。在此情況下,運用設計模式可復用的設計方案進行軟件的設計開發(fā)十分必要。MVC模式已被證明是一種成功的軟件設計模式,本文主要討論了一種實現MVC模式的應用框架Struts,并通過一個實例展示了Struts框架實現MVC模式的方法。M

2、VC設計模式MVC(Modle-View-Controller,模型-視圖-控制器)模式是Xerox PARC在20世紀80年代為編程語言Smalltalk-80所設計的一種軟件設計模式,至今已被廣泛使用,并被推薦為Sun公司J2EE平臺的設計模式,其為開發(fā)交互式應用系統(tǒng)提供了一個優(yōu)秀的設計模式,受到越來越多開發(fā)者的歡迎。MVC模式主要由3個部分組成:模型、視圖和控制器,其結構如圖1所示。圖1 MVC模式框架模型表示業(yè)務邏輯和業(yè)務規(guī)則等,在MVC的三個部件中擁有最多的處理任務。它可以用JavaBean和EJB等組件技術來處理數據庫的訪問。模型能為多個視圖提供數據。由于應用于模型的代碼只需寫一次

3、就可以被多個視圖重用,所以減少了代碼的重復性。視圖是屏幕上的顯示。模型進行操作之后,其結果就是通過視圖來顯示的。在視圖中其實沒有真正的處理發(fā)生,只是作為一種輸出數據并允許用戶操作的方式??刂破饔糜诠芾碛脩襞c視圖發(fā)生的交互。一旦用戶想對模型進行處理時,它不能直接去執(zhí)行模型,而是通過控制器來間接地實現??刂破髂軓囊晥D中取值,然后將相應的值傳給模型進行處理??刂破鹘邮苡脩舻妮斎氩⒄{用模型和視圖去完成用戶的需求。由上述可知,MVC模式的處理過程是:首先由控制器接收用戶的請求,并決定應該調用哪個模型來進行處理,然后模型用業(yè)務邏輯來處理用戶的請求并返回數據,最后控制器用相應的視圖返回數據,并通過表達層呈現

4、給用戶。MVC本身就是一個非常復雜的系統(tǒng),所以采用MVC實現Web應用時,最好選一個現成的MVC框架,在此之下進行開發(fā),從而取得事半功倍的效果。現在有很多可供使用的MVC框架,由于Struts有完整的文檔并且相對來講比較簡單,所以用它開發(fā)MVC系統(tǒng)還是比較方便地。Struts框架Struts是Apache組織的一個開放源碼項目。Struts是一個比較好的MVC框架,提供了對開發(fā)MVC系統(tǒng)的底層支持,它采用的主要技術是Servlet,JSP和Custom tag library。其基本構成如圖2所示。圖2 Struts框架圖由圖2可以看出,在Struts框架中Controller功能由Actio

5、nServlet和ActionMapping對象構成,核心是一個Servlet類型的對象ActionServlet,它用來接受客戶端的請求。ActionServlet包括一組基于配置的ActionMapping對象,每個ActionMapping對象實現了一個請求到一個具體的Model部分中Action處理器對象之間的映射。Model部分由Action和ActionForm對象構成。所有的Action處理器對象都是開發(fā)者從Struts的Action類派生的子類。Action處理器對象封裝了具體的處理邏輯,調用業(yè)務邏輯模塊,并且把響應提交到合適的View組件以產生響應。Struts提供的Acti

6、onForm組件對象可以通過定義屬性描述客戶端表單數據。開發(fā)者可以從它派生子類對象,利用它和Struts提供的自定義標記庫結合可以實現對客戶端的表單數據的良好封裝和支持,Action處理器對象可以直接對它進行讀寫,而不再需要和request、response對象進行數據交互。通過ActionForm組件對象實現了對View和Model之間交互的支持。View部分是通過JSP技術實現的。Struts提供了自定義的標記庫,通過這些自定義標記可以非常好地和系統(tǒng)的Model部分交互,通過使用這些自定義標記創(chuàng)建的JSP表單,可以實現和Model部分中的ActionForm的映射,完成對用戶數據的封裝?;?/p>

7、于MVC模式的Struts框架的應用下面通過一個具體實例說明如何應用Struts框架構建應用程序。該實例是一個全面預算管理系統(tǒng)中的預算資料模塊,包括資料錄入、資料查詢、資料修改和資料刪除四個功能,用于完成預算資料的錄入、查詢、修改及刪除。具體在使用Struts框架時,對應各個部分的開發(fā)工作主要包括:1、構建視圖在Struts框架中,視圖的實現主要采用JSP技術,但與傳統(tǒng)的JSP相比有兩個顯著的不同。首先,在Struts下使用JSP開發(fā)視圖,在頁面中沒有包含任何的腳本程序,只是單純的完成數據傳送以及接收和顯示返回的數據。對數據的處理以及頁面的跳轉都在業(yè)務層中來實現。這樣做實現了業(yè)務邏輯和表示邏輯

8、的完全分離,提高了一個應用程序的性能和可擴展性,并有利于程序的復用。第二,Struts框架提供了一組可擴展的自定義標記庫,主要包括: Bean標記、 Logic標記、HTML標記和模板標記。通過使用標記,可以簡化創(chuàng)建用戶界面的過程,并且更好地實現數據的封裝。通過使用這些自定義標記創(chuàng)建的JSP表單,可以實現和業(yè)務層中的ActionForm的映射,非常好地和系統(tǒng)的業(yè)務邏輯部分交互。下面給出資料錄入頁面的部分實現代碼:% page contentType="text/html; charset=GBK" % taglib uri="/WEB-INF/struts-htm

9、l.tld" prefix="html" % taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" % taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %htmlheadtitle前期準備資料錄入/titlelink rel="stylesheet" type="text/css" href="./images/mobile.c

10、ss"/headbody bgcolor="#ffffff"html:form action="/information/budgetinfoadd" enctype="multipart/form-data"table width="95%" border="1" cellspacing="1" cellpadding="2" bordercolor="#CBE7F8" align="center"tr

11、bgcolor="#F2F9FD"td width="20%"類型:/tdtdhtml:select property="infoType" styleClass="input2"html:options collection="TypeList" property="id" labelProperty="typeName"/Java教程 基于MVC模式的Struts框架研究與應用(2)2007年09月09日 星期日 下午 07:02/html:selec

12、t/td/tr/table/html:form/body/html程序中首先引入了HTML、Bean和Logic標記庫,然后用action指出調用的Action組件的絕對路徑,標記html:form和/html:form封裝了表單數據,在業(yè)務層中用相應的ActionForm組件可以將輸入的數據全部得到。可以看出在視圖中沒有進行任何的業(yè)務邏輯的處理,其主要作用是給出客戶端顯示的信息和處理結果,以及請求的轉發(fā),它是和用戶交互的接口。2、構建模型模型采用JavaBean和EJB組件,設計和實現系統(tǒng)的業(yè)務邏輯。根據不同的請求從Action派生具體Action處理對象,完成“做什么”的任務來調用由Bea

13、n構成的業(yè)務組件,創(chuàng)建由ActionForm 的派生類實現對客戶端表單數據的封裝。下面以BudgetInfoAddForm這個ActionForm Bean進行說明:public final class BudgetInfoAddForm extends ActionForm private String infoType;private String title;private String content;private FormFile infoFile;這里表示BudgetInfoAddForm繼承于ActionForm,在這個Bean中定義了視圖中所要顯示數據信息的參數,包括info

14、Type,資料分類;title,資料標題;content,資料內容;infoFile, 資料文件。同時在BudgetInfoAddForm中提供了設定和訪問這些參數的方法:public String getInfoType()public void setInfoType(String infoType)public String getTitle()public void setTitle(String title)public String getContent()public void setContent(String content)public FormFile getInfoFi

15、le()public void setInfoFile(FormFile infoFile)public void reset(ActionMapping mapping, HttpServletRequest request) title = null;content = null;infoFile = null;3、構建控制器在Struts應用框架中,中心控制器(ActionServlet)是由Struts框架本身所提供,開發(fā)人員一般無須對該ActionServlet進行再次開發(fā);負責具體業(yè)務處理的Action類則是開發(fā)者開發(fā)實現的重點,在這些Action對象中會進行所有的業(yè)務操作,處理完畢,由Struts的ActionServlet轉向到jsp頁面,將處理結果返回給客戶端。在預算資料模塊中,實現了四個Action:BudgetInfoAddAction,用于資料錄入; BudgetInfoContentAction,用于資料查詢; BudgetInfoUpdateAction,用于資料修改;BudgetInfoDelAction,用于資料刪除。4、建立配置文件Struts框架中有兩個配置文件web.xml和struts-c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論