標籤:http 使用 sp strong 資料 on bs html ad
在學習struts2之前首先瞭解一下MVC模式。
MVC是一個設計模式,它強制性的使應用程式的輸入、處理和輸出分開。使用MVC應用程式被分成三個核心組件:模型、視圖、控制器。它們各自處理自己的任務。分層概念
模型(Model)
用於封裝與應用程式的商務邏輯相關的資料以及對資料的處理方法。“模型”有對資料直接存取的權力,例如對資料庫的訪問。“模型”不依賴“視圖”和“控制器”,也就是說,模型不關心它會被如何顯示或是如何被操作。但是模型中資料的變化一般會通過一種重新整理機制被公布。為了實現這種機制,那些用於監視此模型的視圖必須事先在此模型上註冊,從而,視圖可以瞭解在資料模型上發生的改變。
視圖(View)
視圖是使用者看到並與之互動的介面,能夠顯示模型中傳遞的資料。為了實現視圖上的重新整理功能,視圖需要訪問它監視的資料模型(Model),因此應該事先在被它監視的資料那裡註冊。
控制器(Controller)
控制器接受使用者的輸入並調用模型和視圖去完成使用者的需求。所以當單擊Web頁面中的超連結和發送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定調用哪個模型構件去處理請求,然後再確定用哪個視圖來顯示返回的資料。
MVC的組件關係圖
互動順序
(1)首先是展示視圖給使用者,使用者在這個視圖上進行操作,並填寫一些業務資料
(2)然後使用者會點擊提交按鈕,來發出請求
(3)視圖發出的使用者請求會到達控制器,在請求中包含了想要完成什麼樣的業務功能以及相關的資料。
(4)控制器會來處理使用者請求,會把請求中的資料進行封裝,然後選擇並調用合適的模型,請求模型進行狀態更新,然後選擇接下來要展示給使用者的視圖。
(5)模型會去處理使用者請求的業務功能,同時進行模型狀態的維護和更新
(6)當模型狀態發生改變的時候,模型會通知相應的視圖,告訴視圖它的狀態發生了改變。
(7)視圖接到模型的通知後,會向模型進行狀態查詢,擷取需要展示的資料,然後按照視圖本身的展示方式,把這些資料展示出來。
下面動手做一個練習,完成填寫使用者資訊並顯示:
使用Servlet中的Filter來充當控制器,他能夠攔截使用者的請求,通過他來分發這些請求到對應的Model和View。
User動作類:
FilterDispatcher控制器類
在FilterDispatcher中的doFilter方法中對請求的資源進行處理:
(1) 如果有必要,對相應的動作類進行執行個體化。
(2) 如果動作對象存在,用請求參數填充該動作的相關屬性
(3) 如果動作對象存在,調用相應的動作方法。在這裡User對象上的save方法就是Save動作的動作方法。
(4) 把請求轉寄給視圖。
這裡的動作指的是能夠應用程式可以完成的一項操作,和動作相關的POJO叫做動作對象。
視圖
input.jsp
detail.jsp
測試:
總結:在這個小程式中,使用Servlet的Filter來充當控制器,來實現請求的轉寄。有input和save兩個動作,input動作的作用僅僅是用於顯示視圖介面,在執行save動作時,控制器執行個體化一個動作對象(User對象),並且使用請求中攜帶的參數來填充動作對象中的屬性,然後指定動作方法(save方法)來完成儲存操作。程式中與商務邏輯和資料操作相關的部分都屬於model層。初學struts2,將學習的過程記錄下來,如有錯誤,望大家指出。
struts2 MVC模式