在瞭解Struts2框架以前,咱們必須知道如下幾點:前端
首先,咱們得了解什麼是框架(軟件工程)?框架是一種結構化的軟件,結構化相對於需求功能來講是框架須要實現的更重要的目標。框架儘可能將特定領域的平常任務和具體問題的處理流程抽象化,而後提供一個平臺,基於這個平臺能夠更快的構建Web應用程序,目前框架的定義仍是比較普遍的,從框架不一樣角度會存在不少不一樣的定義,好比從應用方面,框架(Framework)是整個或部分系統的可重用設計,表現爲一組抽象構件及構件實例間交互的方法;從目的方面一個框架是在一個給定的問題領域內,一個應用程序的一部分設計與實現。web
其次,咱們得了解框架有什麼做用?由於軟件系統發展到今天已經很複雜了,特別是服務器端軟件,涉及到的知識,內容,問題太多。在某些方面使用別人成熟的框架,就至關於讓別人幫你完成一些基礎工做,你只須要集中精力完成系統的業務邏輯設計。並且框架通常是成熟,穩健的,他能夠處理系統不少細節問題,好比,事物處理,安全性,數據流控制等問題。還有框架通常都通過不少人使用,因此結構很好,因此擴展性也很好,並且它是不斷升級的,你能夠直接享受別人升級代碼帶來的好處。其實說白了,框架有兩大點咱們不可忽視的做用:第一,框架自動化了常見的任務。「不要重複的造輪子」,咱們在開發web項目的時候,試想一下若是沒有框架,咱們必須本身實現哪些web項目不可缺乏的功能?好比HTTP字符串轉換爲JAVA數據類型、數據驗證、調用業務邏輯以及數據層以及怎麼展現,而框架就幫咱們簡化了這些任務。第二,框架提供了架構解決方法,不少新人在剛進入web項目開發時不知道從哪裏開始進行,這時候引進框架,你會發現按照框架給定的開發思路,會很快的搭建一套本身的web項目。
數據庫
最後,咱們爲何要學習這些主流框架?其實咱們據說不少大企業都有本身開發的框架,但那也是少數的一些大企業,市場上大多數公司仍是用主流框架,因此掌握幾個主流框架,對咱們跳槽來講是必須的,並不是全部人都能像大牛那樣本身搭建框架,那些人只是少數,咱們只要用好這些框架實現本身的任務,熟悉其中的原理,那咱們也是成功的。設計模式
Struts2做爲一種遵循MVC設計模式的框架,很好的對前端、業務邏輯以及控制器之間的解耦。如下圖片展現了Struts2處理web應用的工做流。安全
根據以上圖片咱們會簡單介紹MVC的關注點以及Struts2履行的這些職責。
服務器
1.控制器-FilterDispatcher/StrutsPrepareAndExecuteFilter(根據jar版本不一樣)架構
Struts2中使用的MVC也被稱爲前端控制器MVC,這意味着控制器在最前端,是請求處理過程當中第一個被觸發的組件。控制器的做用是將請求映射到工做,在Web應用項目中,傳入的HTTP請求能夠被視爲用戶向Web應用程序發送的命令,Web應用程序的一個基本任務就是將這些請求路由到Web應用程序中須要執行的一系列動做。Struts2中的控制器由FilterDispatcher或者StrutsPrepareAndExecuteFilter來扮演,這個重要的對象是一個Servlet過濾器,他檢查每個傳入的請求,決定哪一個Struts2動做處理這個請求。框架會幫你完成全部的控制任務,你只須要告訴框架哪一個請求URL須要映射到哪一個動做便可。框架
2.模型
ide
Struts2中的模型是有動做組件實現。什麼是模型,意思就是應用程序內部狀態,這個狀態由數據模型和業務邏輯共同組成。好比一個登錄功能,業務邏輯以及數據庫存放都會參與身份驗證的過程,咱們會設計業務邏輯從數據庫中拿去數據驗證,這種狀況下就會造成兩種狀態,一個是驗證經過或者是驗證不經過,缺乏業務邏輯或者數據咱們都不可能完成實際的登陸效果。學習
Struts2的動做組件就是將業務邏輯封裝進一個單獨的工做單元,同時在這個單元裏對數據進行傳輸。二者共同做用來實現功能。
3.視圖
視圖是MVC模式的呈現功能,即將模型處理結果展現給用戶看,良好的界面是提升客戶體驗的重要方面,大多數用戶對頁面的要求仍是很高的。
總之,Struts2很好的實現的MVC的設計思路,利用好Struts2對於快速搭建項目以及後期維護都會方便不少。