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

通過Struts應用MVC設計模型

2013-11-23 20:12:21  來源: Java開源技術 

  模型視圖控制器(ModelViewControllerMVC)體系突出了Servlets和JSP的優點同時也令它們的缺點最小化在實現中用戶請求被發送到一個控制器servlet該servlet決定請求的性質並且根據請求的類型傳送給適合的處理器每個處理器都和一個特別的模型相關裡面封裝有商業邏輯來執行一些特別的函數集合處理完畢後結果會發送回處理器處理器選擇適合的視圖顯示它

  Struts最早於月作為Jakarta項目的組成部分問世Jakata項目由Apache Foundation運做項目的創立者希望該項目的研究改進和提高Java Server Pages (JSPs)servlet標簽庫以及面向對象的技術水准Struts為使用MVC體系來編寫應用提供了一個架構Struts使用ActionMapping它允許servlet將用戶的請求轉變為應用行為ActionMapping通常指定一個請求的路徑在請求上進行動作的對象類型以及指定其它需要的屬性

  Action對象作為ActionMapping的一個部分使用負責處理請求並且發送響應回適合的視圖(通常是一個Web浏覽器)或者傳送請求至適合的模型

  在模型和視圖間的橋是一個form bean它可以通過繼承orgapachestrutsactionActionForm得到form bean用來保存處理前的用戶數據或者顯示返回給用戶的模型數據Struts包含有自定義的標簽它可以由創建的form bean中自動組合字段

  在實踐中用戶請求JSP頁面控制器servlet接收請求並決定由哪個應用處理它Action對象傳送該請求到包含有接收商業邏輯的JavaBean中商業邏輯bean將連接數據庫並進行查詢接收結果然後返回結果給Action對象Action對象將結果作為請求的一部分存放到一個form bean中一旦收集完請求的全部數據就可以格式化結果並且顯示最後是JavaServer Page以HTML表格的形式將結果顯示出來

  模型控制器和視圖

  Struts中的控制器的基本組件是ActionServlet類中定義的servlet它是由ActionMappings定義的ActionMapping類表示的是Action對象的名字和位置當一個請求進入控制器時它將請求的路徑映射到Action的位置並且將請求傳送給ActionStruts的ActionMapping類還可能包含有其它的信息這些信息可能只是與你的應用相關例如本地變量環境變量或者其它URIs

  Struts的關鍵是控制器周圍的活動Struts控制器servlet映射事件到類(一個事件通常是一個HTTP POST GET或者類似的請求)ActionServlet是MVC設計模型的司令部也是Structs架構的核心ActionServlet創建和使用Action一個ActionForm和ActionForwardstrutsconfigxml是用來設置Action的在創建Web應用期間采用擴展Action和ActionForm來解決如何響應用戶請求的問題strutsconfigxml則是告訴ActionServlet如何使用擴展類也可擴展ActionServlet以令Structs應用帶有一些自定義的特性

  這個方法有幾個優點首先應用的整個邏輯流都是在一個分等級的文本文件中這樣就可以比較容易地查看理解應用特別是大的應用第二編寫網頁的人在修改網頁時就無需遍歷Java代碼來理解應用的流程而Java開發者在改變流程的時候也無需重新編譯代碼

  ActionForm為Web應用維護session狀態ActionForm是一個抽象類它可以被每個輸入表格模型擴展它代表數據的一般概念可以被HTML表格設置或者更新例如你的應用也許擁有一個被HTML表格設置的UserActionFormStruts的架構將檢查UserActionForm是否存在如果不存在就會創建一個該類的實例Structs將會使用HttpServletRequest的相應字段來設置UserActionForm的狀態在傳送UserActionForm給商業封裝層的UserAction前Struct架構先更新UserActionForm的狀態

  Structs模型包含有系統的狀態和它可以接受的操作可以使用各種各樣的結構來表示模型(例如其它servlets或者JSP)不過在大多數的時候你都會使用JavaBeansJavaBean的屬性或者在Enterprise JavaBeans (EJBs)中由外部數據源得到的數據表示的是狀態而方法則是表示可以在上面進行的操作操作並不需要被JavaBean方法定義在簡單的情況下操作可以放置到Action對象中雖然這樣會令處理和分級之間的區別變得模糊

  Struts MVC應用的視圖通常由JSP構造它可以使用HTML或者XML靜態格式化頁面還提供了一個方法可動態插入自定義的內容來響應用戶的請求Structs的一個關鍵是它的自定義標簽庫它提供了一個方法可以很容易地使用JSP來創建用戶界面

  Structs架構包含有自定義的標簽庫可以通過各種不同的方式使用雖然就使用該架構來說這些庫並不是必須的不過它們包含的標簽在你的應用的許多地方都很有用Structs的一些標簽庫包括有

   structshtml標簽庫該庫可以用作創建動態HTML用戶界面或者表格

   structsbean標簽庫對於將JavaBean代碼放到JSP頁面該庫提供了一個加強方式通過 標簽實現

   strutslogic標簽庫該庫可以管理有條件地產生輸出文本遍歷對象collections以重復地產生輸出文本還有應用流控制

   strutstemplate標簽庫該庫包含的標簽可用作為頁面創建動態的JSP模板這些頁面都擁有一個公共的外觀或者公同的格式

  使用這些標簽庫和其它的任何庫都是一樣的因為庫已經寫好了你所要做的就是告訴servlet引擎要使用它在Tomcat中你可以通過webxml文件中的<taglib>標簽來指定標簽庫的URI以及Web服務器系統上標簽庫描述文件的位置

  The Small Print

  Jakarta工程可讓你下載Structs的二進制版本或者直接由源代碼中編譯它二進制版工作得很好不過如果你擁有一個不常見的軟件平台或者想學習一下如何編譯它也不是很困難無論你的選擇如何Structs都需要以下幾個軟件

   Java Development Kit (JDK) 你需要為你的操作系統下載和安裝一個Java JDK實現

  .Servlet容器你還需要下載和安裝一個兼容Servlet API規范(版以上)JSP規范(版以上)的servlet容器一個好的選擇是下載Apache的Tomcat它可以支持網頁服務並且可以運行servlet和JSP

  .XML解析器Struts需要一個兼容Java API for XML Parsing (JAXP)規范(版或以上)的XML解析器

  .Servlet API類為了編譯Structs或者使用Structs的應用你將需要一個包含有servlet和JSP API類的servletjar文件大部分的servlet容器都包含有這個JAR文件

  .JDBC optional package類Structs支持javaxsqlDataSource的一個可選實現因此它需要這些API類來編譯你可以下載這些包類

  要使用Structs來建立一個應用需要遵從以下步驟首先將Structs中的lib/commons*jar和 lib/strutsjar文件拷貝到應用中的WEBINF/lib目錄然後將Structs中的全部標簽庫描述文件(lib/struts*tld)拷貝到你的Web應用中的WEBINF目錄

  拷貝完這些文件後你就可以修改Web應用中的webxml文件令它包含有一個<servlet>元素來定義控制器servlet還有一個<servletmapping>元素以指明哪個請求的URI被映射到這個servlet如果你使用默認的目錄來進行一個標准的安裝你可以使用Struts例子應用中的webxml文件來作為一個參考看它是如何設置的然後你就可以修改Web應用中的webxml文件來指定適當的標簽庫聲明再次申明你可以由Structs的例子應用中學習如何設置

  修改完webxml文件後在WEBINF目錄創建一個稱為strutsconfigxml的文件在其中定義操作映射和其它與你的應用相關的特性最後在每個將使用Struts自定義標簽的JSP頁面的頂部加入Struts自定義標簽的聲明

  Struts這個名字來源於在建築和舊式飛機中使用的支持金屬架它的目的是為了幫助你減少在運用MVC設計模型來開發Web應用的時間你仍然需要學習和應用該架構不過它將可以完成其中一些繁重的工作如果想混合使用servlets和JSP的優點來建立可擴展的應用Struct可以幫助你完成其中的一些工作


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28121.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.