當前位置:編程學習大全網 - 源碼下載 - struts2解決了什麽問題

struts2解決了什麽問題

Struts框架主要解決的問題是對MVC設計模式進行了封裝。使其可以方便的使用。

Struts 2是Struts的下壹代產品。是在 struts 和WebWork的技術基礎上進行了合並,全新的Struts 2框架。其全新的Struts 2的體系結構與Struts 1的體系結構的差別巨大。Struts 2以WebWork為核心,采用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器能夠與Servlet API完全脫離開,所以Struts 2可以理解為WebWork的更新產品。因為Struts 2和Struts 1有著太大的變化,但是相對於WebWork,Struts 2只有很小的變化。

Struts2的體系與Struts1體系的差別非常大,因為Struts2使用了WebWork的設計核心,而不是Struts1的設計核心。Struts2中大量使用攔截器來處理用戶的請求,從而允許用戶的業務邏輯控制器與Servlet API分離。瀏覽器發送壹個請求。核心控制器FilterDispatcher根據請求決定調用合適的Action。WebWork的攔截器鏈自動對請求應用通用功能,如驗證等。回調Action的execute方法,該execute方法根據請求的參數來執行壹定的操作。Action的execute方法處理結果信息將被輸出到瀏覽器中,支持多種形式的視圖。

在Action的實現方面:Struts1要求必須統壹擴展自Action類,而Struts2中可以是壹個普通的POJO。線程模型方面:Struts1的Action工作在單例模式,壹個Action的實例處理所有的請求。Struts2的Action是壹個請求對應壹個實例。沒有線程安全方面的問題。Servlet依賴方面:Struts1的Action依賴於Servlet API,比如Action的execute方法的參數就包括request和response對象。這使程序難於測試。Struts2中的Action不再依賴於Servlet API,有利於測試,並且實現TDD。封裝請求參數:Struts1中強制使用ActionForm對象封裝請求的參數。Struts2可以選擇使用POJO類來封裝請求的參數,或者直接使用Action的屬性。表達式語言方面:Struts1中整合了EL,但是EL對集合和索引的支持不強,Struts2整合了OGNL(Object Graph Notation Language)。綁定值到視圖技術:Struts1使用標準的JSP,Struts2使用“ValueStack”技術。類型轉換:Struts1中的ActionForm基本使用String類型的屬性。Struts2中使用OGNL進行轉換,可以更方便的使用。數據校驗:Struts1中支持覆蓋validate方法或者使用Validator框架。Struts2支持重寫validate方法或者使用XWork的驗證框架。Action執行控制的對比:Struts1支持每壹個模塊對應壹個請求處理,但是模塊中的所有Action必須***享相同的聲明周期。Struts2支持通過攔截器堆棧為每壹個Action創建不同的聲明周期。

從某種程度上看,Struts2是從WebWork2上升級得到的。甚至Apache的官方文檔也講:WebWork2到Struts2是平滑的過渡。我們甚至也可以說Struts2就是WebWork2.3而已。在很多方面Struts僅僅是改變了WebWork下的名稱。

  • 上一篇:如何手動檢查電腦是否中毒?
  • 下一篇:網站後臺HTTP 500 內部服務器錯誤(急)
  • copyright 2024編程學習大全網