Struts框架及Web開發_第1頁
Struts框架及Web開發_第2頁
Struts框架及Web開發_第3頁
Struts框架及Web開發_第4頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、Struts框架及Web開發    摘要  Struts是當前Web應用開發中最為流行的框架之一。本文簡要介紹了MVC(Model/View/Controller)設計模式和Struts框架的體系結構,然后結合一個實例,講述了Struts實現MVC模式的Web應用的過程。結果顯示Struts能夠大大提高開發效率,同時提高系統的可維護性和擴充性。     關鍵詞  MVC模式;框架;Struts;Web應用      0  引言  

2、60;  傳統的Web應用開發工具(ASP、JSP)將頁面顯示、商業邏輯和數據處理大部分都集中在頁面代碼中,Web應用擴展維護比較困難,也不利于開發人員分工協作,在大型WEB應用開發中愈發顯得力不從心。MVC(Model-View-Controller)設計模式將頁面顯示、商業邏輯和數據處理相分離,最大限度的降低系統各部分之間的耦合性,從而增強系統的可擴展維護性,提高代碼重用率,使系統的層次結構更加清晰,易于分工協作。而Struts是一個為開發基于MVC模式的應用架構的開源框架。 1  Struts框架的體系結構 1.1  MVC設計模式   

3、  MVC設計模式是一種“分治”的思想,它使應用程序的輸入、處理和輸出分開,把應用程序分成三個核心模塊:模型(Model)、視圖(View)和控制器(Controller)。Model用來儲存應用程序的數據以及訪問、維護這些數據的業務邏輯,View建立終端用戶的表示層,Controller是模型與視圖的接口,其作用是獲取并處理HTTP請求,并調用相關的業務模型中的方法對請求進行處理,然后將對象模型層次處理后的結果返回到View。可見MVC設計模式的主要優點是實現了業務邏輯和顯示邏輯的分離,提高了系統的可維護性、可擴展性、可移植性和組件的復用性。 1.2  Struts框架

4、    Struts是基于MVC的Web應用框架,由一組相互協作的類、Serlvet以及JSP TagLib組成。在Struts框架中,模型由實現業務邏輯的JavaBean或EJB組件構成,控制器由ActionServlet和Action來實現,視圖由一組JSP文件構成。Struts框架的體系結構如圖1所示。下面分別從模型、視圖、控制來看看struts的體系結構。      視圖:主要是通過JSP技術生成頁面完成視圖,利用Struts提供的自定義標記庫編寫用戶界面把應用邏輯和顯示邏輯分離。Struts框架通過這些自定義標記建

5、立了View和Model之間的聯系,可以實現和Model部分中的ActionForm的映像,完成對用戶數據的封裝。    圖1  Struts體系結構     控制器:作用是從客戶端接受請求,并選擇執行相應的業務邏輯,然后把響應結果送回到客戶端。在Struts中,控制器由ActionServlet和ActionMapping對象構成,核心是一個Servlet類型的對象ActionServlet,它用來接受客戶端的請求并分發到相應的動作類(Action類的子類)。ActionServlet包括一組基于配置的Actio

6、nMapping對象,每個ActionMapping對象實現了一個請求到一個具體的Model部分中Action對象之間的映射。    模型:在Struts中,Model可以分為系統的內部狀態和改變系統狀態的行為(業務邏輯)兩部分。系統的內部狀態常由一組JavaBean表示,業務邏輯由Action和ActionForm的類對象處理。Action對象封裝了具體的處理邏輯,調用業務邏輯模塊,并且把響應提交給合適的View以產生響應業務對象更新應用程序的狀態。ActionForm可以派生子類對象,通過結合自定義標記庫以實現對客戶端的表單數據的良好封裝和支持。Action對象可以直接

7、對ActionForm進行讀寫,而不再需要和request,response對象進行數據交互。通過ActionForm對象實現了對View和Model之間交互的支持。      Struts-config.xml:用于建立Controller和Model之間的關系,將各部分緊密聯系在一起。它描述了Controller所使用的把請求對應到具體處理的法則,同時它還描述了客戶提供的數據與ActionForm組件的對應映射關系。 1.3  Sturts的工作流程     對于采用Struts框架的Web應用,在Web應用啟

8、動時就會加載并初始化ActionServlet,從struts-config.xml文件中讀取配置信息,把他們存放到各種配置對象中。其具體工作流程如下:     客戶端(Client)通過本地瀏覽器(Browser)向服務器發出一個請求(HTTP Request)。     控制器(Controller)接收請求,即ActionServlet實現控制工作。它在struts-config.xml文件中尋找請求的URL,找到對應的Action。     Action類執行建立在模型組件基礎上的業務邏輯,模型組

9、件是和應用程序關聯的。     一旦Action類處理完業務邏輯,它把控制權返回給ActionServlet,Action類提供一個鍵值作為返回的一部分,它指明了處理的結果AcLionServlet使用這個鍵值來決定在什么視圖中顯示Action的類處理結果。     當ActionServlet把Action類的處理結果傳送到指定的視圖中,請求的過程也就完成了。 2  Web開發中的應用     以一個Web考試系統中的考生注冊子系統為例,說明Struts在Web程序開發中的應用。考生在注冊頁面

10、上輸入考生名、密碼等相關信息,若注冊成功,控制將轉向一個顯示注冊成功的頁面,否則控制將轉向一個顯示失敗的頁面。     項目建立     struts可運行在多種Web服務器上,這里使用同樣出自Jakarta項目的Web服務器Tomcat。首先展開struts的壓縮文件到Tomcat的主目錄webapps下,接著在目錄webapps下新建目錄testWeb,將webappsStruts-example下的WEB-INF目錄拷貝到test目錄下,然后將testWEB-INF下的src和classes目錄以及struts-coufig.x

11、ml文件中內容清空。開發時,將JSP文件放在testWeb目錄下,Java源文件放在testWebWEB-INFsrc下,編譯后的類文件放在testWebWEB-INFclasses下。     實現視圖功能的用戶界面的設計     JSP具有定制標記和包含Web組件的能力,可以實現定制的組件、容器和布局管理器,從而實現可擴展的、可重用的和可維護的Web應用界面。Struts中,JSP頁面中利用Struts框架提供的taglib標記庫的標記(如Struts bean,html,logic,template標記),能夠大大提高開發效率。

12、在該系統中,其注冊頁面reguserinfo.jsp概要如下: <%page contentType=”text/html;charset=UTF-8” language=”java”%> <% taglib uri="/WEB-INF/struts-bean.tld" prefix= "bean"%> /引用Struts bean標記 <% taglib uri="/WEB-INF/struts-html.tld" prefix ="html"%> /引用Struts html

13、標記 <html:html locale="true"> <head><title>RegisterUser</title></ head> <body bgcolor="#FFFF"><html:errors/> <html:form action="reguser.do" focus="userID" > <table border="0" width="100%">

14、; <tr> <th align="right" >UserName:</th> <td align="left"><html: text property="userID" size="20" maxlength="20"/> </td></tr> <tr> <th align="right" >Password:</th> <td align=&q

15、uot;left"><html: password maxlength="20" size="20" property="password" /></td></tr> <tr> </tr> <tr> <td align="right" > <html: submit property= "submit" value="submit" /></td> &l

16、t;td algin="left"><html: reset /> </td></tr> </table></html:form></body></html:html>     實現模型功能的組件設計     構建模型部分的組件是工作重點,它包含了整個應用程序的業務邏輯。此系統設計的組件為:     系統狀態組件(FormBean),即實體模型類,它繼承自ActionForm類,用來存放表單數據,

17、與注冊頁面的表單對應的數據bean為: import org.apache.struts.action.*;/引用Struts類包 public class UserForm extends ActionForm   private String userID= null; private String password= null;   public String getUserID()return userID;   public void setUserID(String userID) this.userld= userID;   public

18、String getPassword()return password;   public void setPassword(String password) this. password=password;     指令類組件(ActionBean),它擴展了Action類,主要是用來控制應用程序的流程,當注冊考生按“submit”按鈕后,來自用戶的請求被Servlet(Controller)送到指令類組件RegUserAction,指令類調用相應的業務邏輯進行處理,然后把請求轉發給相關的JSP,其程序概要為: ; import org.apache.

19、struts.action.*; public class RegUserAction extends Action   public ActionForward perform(ActionMapping     mapping, ActionForm form, HttpServletRequest   req, HttpServletResponse response)   boolean flag;   String username=req.getParameter(“UserID”); String passwo

20、rd=req.getParameter(“password”); /獲取其他注冊信息,并根據注冊信息,做相應的數據庫操作,返回是否注冊成功標志flag   if (flag) try UserDirectory.getInstance().setUser(UserID, password); return mapping.findForward(“success”); catch(UserDirectoryException e) return mapping.findForward(“failure”); return mapping.findForward(“failure”);

21、 /注冊成功后轉發給相應的jsp文件 其中UserDirectory是一個helper類,記錄UserID和password 到一個標準的屬性文件之中。     實現控制器功能的指令     Struts框架的核心是控制器類ActionServlet,不需要重新設計而直接使用。ActionServlet的核心是struts-config.xml配置文件,它包含了應用程序的整個邏輯流程。在考生注冊信息過程中,用reguserinfo.jsp實現注冊頁面;用UserForm(擴展了ActionForm)封裝了表單數據;用RegU

22、serAction(擴展了Action)實現了考生注冊信息(業務邏輯)并控制了應用程序流程;而在struts-config.xml配置文件里實現了注冊頁面(reguserinfo.jsp)、數據bean(UserForm)、邏輯bean (RegUserAction)之間的聯系,其配置信息為: ; <struts-config> <form-beans>   <form-bean name="userForm" type=" UserForm"/> </form-beans> <action

23、-mappings> <action path="/reguser" type="RegUserAction" input="/reguserinfo.jsp" name="userForm" scope="request"> <forward name="success" path="/regsucess.jsp"/> <forward name="failure" path="/regfailure.jsp"/> </action> </action-mappings></struts-config>     當在注冊頁面上單擊“submit”按鈕時,考生請求被提交給Ac

溫馨提示

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

評論

0/150

提交評論