javascript
Spring 3.x MVC 图解MVC整体流程
Spring mvc的生命周期
開始使用 spring mvc之前,我們必須需要了解下SPRING MVC的流程,如下圖:
?
在看下圖之前的一些說明: (下面介紹的HandlerMapping,HandlerAdapter,HandlerExceptionResovler,ViewResolver都有個order屬性,因為這些接口每一個都可以注冊多個實現,order代表他們的執行順序,order越小的越先執行,一般先執行的匹配到了后面的就不會執行了)
DispatcherServlet:???????? 整個Spring MVC的前端控制器,由它來接管來自客戶端的請求
HandlerMapping:? ?????????DispatcherServlet會通過它來處理客戶端請求到各個(Controller)處理器的映射
HandlerAdapter:?? ?????????HandlerMapping會根據它來調用Controller里需要被執行的方法
HandlerExceptionResolver:??? spring mvc處理流程中,如果有異常拋出,會交給它來進行異常處理
ViewResolver:????????????? HandlerAdapter會把Controller中調用返回值最終包裝成ModelAndView,ViewResolver會檢查其中的view,如果view是一個字符串,它就負責處理這個字符串并返回一個真正的View,如果view是一個真正的View則不會交給它處理,為什么view即可以是字符串又會是View呢下面會進行解釋
View:???????????????????????? 對應MVC 中的V, 此接口只有一個方法 render,用于視圖展現
ModelAndView??????????? ?對于解決上面介紹ViewResoler或者下面圖片的疑惑,這個類中的view這個屬性是 Object 類型的,它可以是一個視圖名也可以是一個實際的View,這點我們觀察其源碼可以很清楚的看出來
private Object view;
?
?public void setViewName(String viewName) {
?this.view = viewName;
}
?public String getViewName() {
return (this.view instanceof String ? (String) this.view : null);
}
?public void setView(View view) {
this.view = view;
?}
?public View getView() {
return (this.view instanceof View ? (View) this.view : null);
?}?????
Spring mvc的流程圖
如果看不全或者看不清圖,請點擊以下鏈接,由于圖片太大,流程入口從中間上方的Client開始
http://pic002.cnblogs.com/images/2012/267998/2012010623530925.png
轉自:http://www.cnblogs.com/zhaoyang/archive/2012/01/07/2315403.html 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Spring 3.x MVC 图解MVC整体流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中的StringBuilder类
- 下一篇: [JavaScript] FireBug