struts2是一種重量級的框架,位於MVC架構中的controller,可以分析出來,它是用於接受頁面資訊然後通過內部處理,將結果返回。
同時struts2也是一個web層的MVC框架,那麼什麼是struts2中的MVC呢?
我們可以聯想一下struts2的使用流程,我們需要先通過過濾器,呼叫URL判斷使用哪個Action,再由Action決定返回結果,繼而 提交請求。那麼這就構成了一個MVC架構,由過濾器(Controller)控制選擇動作Action(Model),獲得結果Result(View),向控制器提交請求。
所以從巨集觀架構的角度來講,struts2就是聯絡了模型層和檢視層,將使用者要求按照業務邏輯執行並且返回結果。
簡要概括一下它的作用,無非在於傳遞引數,將請求傳送給合適的控制器,在控制器中呼叫業務介面,最後將業務介面返回的結果返回給指定的檢視。
但是說了這麼多,我們還沒有看到struts2的優越之處,所以我們為什麼要選擇他作為控制層呢?這裡我們需要了解一下,在struts2框架出現之前,我們是使用sevlet來進行操作的,也就是說struts2是淘汰掉了servlet,那麼讓我們來做一個對比。
我們主要從三方面來對比:
①配置:當我們配置servlet的時候,我們需要在web.xml中配置很多,也就是說一個servlet我們就需要配置一段程式碼,這樣不僅會導致web.xml中的程式碼過於繁多,並且不利於分組開發,需要手動配置二級的URL-PATTERN。
而在使用struts2的時候就很好的解決了這個問題,我們引用專門的XML檔案,配置package屬性和action屬性,大大增加了配置程式碼的可讀性,而且結構層次清晰,提升了分組開發的效率。
②測試:當我們需要測試我們的程式碼的時候,使用servlet的我們必須要配置兩個與容器相關的引數,HttpServletResponse和HttpServletRequest,這樣就會增加我們的工作量,而struts2則可以很好的獨立完成單元測試。
③傳參:每次傳參的時候,使用servlet我們就必須手動操作作用域,如果serlvet方法非常多的情況下,就會很大程度上影響開發,在struts2中,我們的預設過濾器棧中自帶了自動收參的方法,極大的便利了我們的開發。
在其他的方面其實struts2也有很大的優勢,比如全域性異常的設定比如攔截器的配置比如...
簡要概括使用流程:
①匯入jar包
②配置核心過濾器
③建立Action,書寫程式碼並配置返回值
④配置配置檔案
總結一下struts2的好處:
struts2將應用分層,使產品結構清晰,能夠減少程式碼的維護量,同時能夠使開發人員分層實現,也就是說Java程式設計師可以只專注於業務邏輯的實現
專案開源,使用及擴充套件方便
提供了強大的全域性異常處理機制;
Result方式的頁面導航,通過 Result 標籤很方便的實現重定向和頁面跳轉;
通過簡單、集中的配置來排程業務類,使得配置和修改都非常容易;
提供簡單、統一的表示式語言來訪問所有可供訪問的資料(OGNL);
提供標準、強大的驗證框架和國際化框架;
提供多種表現層的技術支援和頁面標籤,大大簡化開發;
擁有簡單的外掛,只需要放入響應的 jar 包,任何人都可以擴充套件 Struts2 框架,比如:
自定義攔截器、自定義結果型別、自定義標籤等,為 Struts2 定製需要的功能,不需要什麼特殊的配置,並且可以釋出給其他人使用。
擁有智慧的預設設定,不需要另外進行繁瑣的設定。使用預設設定就可以完成大多數專案程式開發所需的功能。
原文連結:struts2的作用是什麼 - 雙間 - 部落格園 (cnblogs.com)