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框架
- ORACLE關閉過程淺析Oracle
- ORACLE啟動過程淺析Oracle
- 淺析Spring Security 的認證過程及相關過濾器Spring過濾器
- C程式編譯過程淺析C程式編譯
- iOS效能優化過程淺析iOS優化
- Spring AOP實現過程Spring
- Spring MVC framework 執行過程SpringMVCFramework
- Spring原始碼淺析之bean例項的建立過程(一)Spring原始碼Bean
- Spring原始碼淺析之bean例項的建立過程(二)Spring原始碼Bean
- 淺析Java程式的執行過程Java
- 面試問爛的 Spring MVC 過程面試SpringMVC
- WebSocket 實現原理淺析Web
- hashmap實現原理淺析HashMap
- MySQL伺服器連線過程淺析MySql伺服器
- 淺析Android Activity的啟動過程Android
- 淺析Spring中AOP的實現原理——動態代理Spring
- iOS MVC、MVVM、MVP架構模式淺淺析iOSMVCMVVMMVP架構模式
- Spring MVC 啟動過程原始碼分析SpringMVC原始碼
- MySQL 查詢語句執行過程淺析MySql
- 瀏覽器渲染過程與原理淺析(一)瀏覽器
- RecyclerView 之 Adapter 的簡化過程淺析ViewAPT
- 淺析weak指標的實現指標
- Flutter動畫實現原理淺析Flutter動畫
- NX實現機制淺析
- Netty 實現原理淺析Netty
- 深入淺出Spring MVCSpringMVC
- 淺析Spring之IoCSpring
- 淺析大促備戰過程中出現的fullGc,我們能做什麼?GC
- 前端動畫實現以及原理淺析前端動畫
- hashmap與Hashtable實現原理淺析HashMap
- HandyJSON實現方案淺析JSON
- 淺析CAS操作與JAVA實現Java
- 原始碼簡析Spring-Integration執行過程原始碼Spring
- 淺析如何通過PHP類的反射來實現依賴注入PHP反射依賴注入
- 淺析 Spring 的IOC容器Spring
- 淺析Spring Security 核心元件Spring元件
- Linux 程式排程淺析Linux