整合SSM框架必備基礎—SpringMVC(上)


01 MVC概述

在Web系統開發中一般按照視圖(View)、模型(Model)、控制(Controller)三層設計模式進行構建,視圖層負責模型數據的渲染,將數據用一定的形式展現給用戶;模型層負責監聽實體的變化並對實體進行解析和封裝;控制層負責提供前后端交互的請求邏輯處理入口,處理用戶請求,並建立適當的模型傳遞給視圖進行渲染。層級關系一般如下圖所示:
在這里插入圖片描述
在Web開發的早期,JSP + Servlet + JavaBean的組合非常流行,那個時候JSP擔任着視圖層渲染工作,Servlet作為控制器負責用戶的請求和響應,而JavaBean則負責一些更加復雜的業務邏輯,例如跟數據庫打交道。

后來出現了一個新的MVC框架Struts2,它將action作為框架的控制器負責用戶請求響應,同時為前端頁面提供了標簽庫和有力的渲染工具-OGNL,用戶請求action返回數據到JSP后,在JSP中可以采用OGNL表達式對數據進行動態的渲染,它還增加了請求過濾器以及進行請求前后處理的攔截器,方便系統過濾、攔截一些不符合規則的請求並做出及時的響應操作,不得不說它的出現降低了系統的耦合性,讓MVC模式的分層更加明顯,也大大的簡化了開發者的代碼量。

02 SpringMVC簡介

由於Struts2框架帶來的便利,它和Spring在過去很長一段時間被結合在一起用來構建系統,但是隨着技術的發展,二者的結合出現了很多問題例如類臃腫、兼容性以及Struts2漏洞等問題,而就在這時候,Spring家族誕生了一個新的MVC框架來與Spring實現無縫結合,它就是SpringMVC。

SpringMVC是采用Java開發,一種基於Web MVC設計模式,以請求驅動為類型的輕量級Web框架。由於使用了MVC架構模式的思想,將Web層進行了職責解耦,讓分層更加的明顯。

03 SpringMVC優勢

談到SpringMVC的優勢,首先想到的就是它依賴Spring的包才能運行,也就是說它其實是Spring的一個MVC子框架,這樣的話就可以跟Spring實現無縫的結合,從而繼承它的眾多特性,這一點比起Struct2框架就有了很大的先天優勢,另外還有其他的幾個優點如下:

1、實現方法級別的請求攔截
上面提及的Struts2采用的是類級別的請求攔截,即一個類對應一個請求上下文,而SpringMVC采用方法級別的攔截,一個方法對應一個請求URL,也就是一個請求上下文。所以從架構本身上SpringMVC容易實現Restful接口,而Struts2的架構實現起來要麻煩很多,因為Struts2 action的一個方法可以對應一個URL,但是它的類屬性卻被所有的方法共享,這也就無法用注解或其他方式標識其所屬的方法了。

2、SpringMVC提供強大的注解
SpringMVC引入了注解的功能,通過在類、方法上標記相應的注解,可以實現實體的映射、配置的加載等,使用起來非常便利,可以大大簡化配置和代碼量,比如說同樣是接收請求,Servlet作為控制器需要在doPost或者doGet中做一些處理后才能調用業務代碼,而SpringMVC通過幾個注解就可以實現,例如@Controller可以幫助定義當前類為一個Spring管理的bean,同時指定該類是一個控制器,可以用來接受請求,標識當前類是控制層的一個具體的實現;@requestMapping放在方法上面用來指定某個方法的路徑,當它放在類上的時候相當於命名空間需要組合方法上的requestMapping來訪問。

3、清晰的角色划分
控制器(Controller)、驗證器(Validator)、命令對象(Command-obect)、表單對象(form-object)、模型對象(model-object)、Servlet分發器(DispatcherServlet)、處理器映射(handler-mapping)、視圖解析器(view-resolver)等等。每一個角色都可以由一個專門的對象來實現。

04 SpringMVC流程步驟

在這里插入圖片描述
SpringMVC的具體執行流程步驟如下:

1.首先用戶在前台頁面向某一個后台指定的URL發起了請求,SpringMVC收到這個請求后會首先交給中央控制器(DispatcherServlet)

2.中央控制器請求HandlerMapping查找 Handler處理器 (可以根據xml配置、注解進行查找)

3.處理器映射器HandlerMapping向中央控制器返回Handler,HandlerMapping會把請求映射為HandlerExecutionChain對象(包含一個Handler處理器(頁面控制器)對象,多個HandlerInterceptor攔截器對象),通過這種策略模式,很容易添加新的映射策略

4.中央控制器調用處理器適配器去執行Handler

5.處理器適配器HandlerAdapter將會根據適配的結果去執行Handler

6.Handler執行完成給適配器返回ModelAndView

7.處理器適配器向中央控制器返回ModelAndView (ModelAndView其實是SpringMVC框架的一個底層對象,包括模型Model和視圖View)

8.中央控制器請求視圖解析器去進行視圖解析 (根據邏輯視圖名解析成真正的視圖(jsp),通過這種策略很容易更換其他視圖技術,只需要更改視圖解析器即可

9.視圖解析器向中央控制器返回View

10.中央控制器進行視圖渲染 (視圖渲染將模型數據(在ModelAndView對象中)填充到request域)

11.前端控制器向用戶響應結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM