Spring MVC實現過程淺析
1.Spring MVC
1)什麼是Spring MVC
Spring MVC是Spring框架中一個功能模組,實現MVC結構,便
於簡單,快速開發MVC結構的WEB應用,Spring MVC提供的API
封裝WEB開發中常用的功能,簡化WEB開發過程
2)Spring MVC的核心元件
DispatcherServlet(控制器,請求入口)
HandlerMapping(控制器,請求派發)
Controller(控制器,請求處理)
ModelAndView(封裝業務處理結果和跳轉檢視)
ViewResolver(檢視顯示處理器)
3)Spring MVC的處理流程
瀏覽器向伺服器傳送請求,請求交給前端控制器DispatcherServlet
前端控制器通過HandlerMapping找到相對應的Controller元件
來處理請求,執行Controller元件的約定方法,在約定方法中調
用模型層元件來完成業務處理,約定方法返回一個ModelAndView
物件,此物件封裝處理結果和跳轉的檢視名稱,前端控制器接收
到ModelAndView物件之後,呼叫ViewResolver元件定位View
(JSP),傳遞資料資訊,生成響應頁面
2.基於XML配置的MVC應用
搭建Spring MVC環境
建立WEB工程,匯入Spring MVC相關開發包
Spring ioc,web,webmvc開發包
在src下新增Spring XML配置檔案
名稱可以自定義,例如spring-mvc.xml
在web.xml中配置DispacherServlet前端控制器
配置DispacherServlet時,同時指定XML配置檔案路徑
Controller元件負責執行具體業務處理,編寫時需要實現Controller
介面及約定方法handleRequest
handleRequest方法返回一個ModelAndView物件,此物件封裝
處理結果資料和跳轉的檢視名稱
ModelAndView(String viewName)
ModelAndView(String viewName,Model model)
viewName是檢視名稱,model是處理的結果資料
HandlerMapping元件,對映請求URL和請求處理器Controller組
件對應關係的
SimpleUrlHandlerMapping維護一個個HTTP請求和Controller映
射關係列表(Map),根據列表對應關係呼叫Controller
ViewResolver元件,對ModelAndView物件封裝的檢視名稱進行
解析
InternalResourceViewResolver,它支援對Servlet和JSP及子類
JstlView響應
3.基於註解配置的MVC應用
Controller註解應用
推薦使用@Controller註解宣告Controller元件,可以使得控制器
定義更加靈活,可以不用實現Controller介面,請求處理方法也可
以靈活定義
為了使@Controller註解生效,需要在Spring的XML配置檔案中開
啟元件掃描定義
<context:component-scan base-package=""/>
RequestMapping註解應用
@RequestMapping註解可以用在類定義前和方法定義上,表明此
元件類的方法與哪一個請求對應
為了使@RequestMapping註解生效,需要在Spring的XML配置
檔案中開啟MVC註解掃描
<mvc:annotation-driven/>
4.接收請求引數
Spring MVC請求提交資料到控制器有以下方式
1)使用HttpServletRequest獲取
Spring自動引數注入到HttpServletRequest
優點直接,缺點需要自己處理資料型別的轉換
2)使用@RequestParam註解
Spring會自動將引數注入到方法引數(名稱一致)
使用@RequestParam註解對映不一致的名稱
優點引數型別自動轉換,但可能出現型別轉換異常
3)使用自動封裝成Bean物件
定義實體類,屬性名必須與請求引數名相同
5.向頁面傳值
當Controller元件處理後,需要向JSP傳值的方法
1)直接使用HttpServletRequest或HttpSession
2)使用ModelAndView物件
3)使用ModelMap引數物件
在Controller處理方法中追加一個ModelMap型別的引數
注意:資料會利用HttpServletRequest的attitude傳遞到頁面
相關文章
- 淺析Spring Framework框架容器啟動過程SpringFramework框架
- 淺析Spring Security 的認證過程及相關過濾器Spring過濾器
- Spring AOP實現過程Spring
- Spring原始碼淺析之bean例項的建立過程(一)Spring原始碼Bean
- Spring原始碼淺析之bean例項的建立過程(二)Spring原始碼Bean
- 面試問爛的 Spring MVC 過程面試SpringMVC
- Spring MVC 啟動過程原始碼分析SpringMVC原始碼
- 淺析Java程式的執行過程Java
- 淺析Spring中AOP的實現原理——動態代理Spring
- 深入淺出Spring MVCSpringMVC
- MySQL伺服器連線過程淺析MySql伺服器
- iOS MVC、MVVM、MVP架構模式淺淺析iOSMVCMVVMMVP架構模式
- HandyJSON實現方案淺析JSON
- 瀏覽器渲染過程與原理淺析(一)瀏覽器
- MySQL 查詢語句執行過程淺析MySql
- 淺析Spring之IoCSpring
- NX實現機制淺析
- 原始碼簡析Spring-Integration執行過程原始碼Spring
- 淺析大促備戰過程中出現的fullGc,我們能做什麼?GC
- Spring mvc檔案上傳實現SpringMVC
- 淺析 Spring 的IOC容器Spring
- 淺析Spring Security 核心元件Spring元件
- 淺析weak指標的實現指標
- AnalyticDB實現和特點淺析
- Flutter動畫實現原理淺析Flutter動畫
- 手寫Spring MVC框架(一) 實現簡易版mvc框架SpringMVC框架
- 淺析如何通過PHP類的反射來實現依賴注入PHP反射依賴注入
- Spring MVC 過時了嗎?SpringMVC
- Spring MVC原始碼(一) ----- 啟動過程與元件初始化SpringMVC原始碼元件
- 前端動畫實現以及原理淺析前端動畫
- Spring-IOC原始碼淺析Spring原始碼
- 淺析Spring的IoC和DISpring
- Spring Boot構造流程淺析Spring Boot
- AMSI 淺析及繞過
- Bytom側鏈Vapor原始碼淺析-節點出塊過程Vapor原始碼
- promise實現過程Promise
- @ComponentScan註解的實現,Spring掃描包的過程Spring
- 精盡Spring MVC原始碼分析 - 一個請求的旅行過程SpringMVC原始碼