Spring MVC實現過程淺析

爪哇島的流浪漢發表於2018-07-16


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傳遞到頁面

相關文章