日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring mvc ViewResolver视图解析器实现机制

發布時間:2024/9/30 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring mvc ViewResolver视图解析器实现机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概要

我們在controller里面經常這樣return一個ModelAndView。

return new ModelAndView("userList", "users", userList);

DispatcherServlet 靠 ViewResolver 把 userList 解析為 /WEB-INF/jsp/userList.jsp

常用的ViewResolver:InternalResourceViewResolver

ViewResolver配置

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp" /><property name="suffix" value=".jsp" /> </bean>

ViewResolver 初始化

繼續上一篇Spring mvc DispatchServlet 實現機制 初始化DispatchServlet的時候,執行了初始化ViewResolver操作。

  • 判斷 detectAllViewResolvers 是否為true,如果為true,則加載當前系統中所有實現了ViewResolver接口的bean。
  • 如果為false,則加載bean名稱為“viewResolver”的ViewResolver實現類。
  • 如果還沒有找到ViewResolver,則加載SpvingMVC 配置文件中,默認配置的ViewResolver。
  • detectAllViewResolvers 設置

    detectAllHandlerMappings 默認為true,如果只想加載自己指定的HandlerMapping,請使用下面的方式指定

    如果這樣指定,則Spring MVC 只會加載這個ViewResolver,而不會加載配置的其它的ViewResolver。

    解析視圖跳轉頁面

    當處理完成Controller的邏輯后,需要給請求用戶一個響應反饋,一般都是返回一個響應的一個頁面。
    DispatcherServlet執行完Controller的邏輯后會調用render() 方法進行處理視圖的跳轉工作。

    resolveViewName() 方法


    查找合適的ViewResolver來獲取View。

    然后調用AbstractCachingViewResolver.java的resolveViewName() 方法


    1. 首先判斷緩存中是否存在View,如果不存在則調用 createView() 方法創建View
    2. 如果有則從緩存中獲取View

    createView() 方法

    loadView() 方法

    UrlBasedViewResolver.java

    buildView() 方法


    在這里我們可以看到,填充View對象中的Url屬性時,自動加上配置中ViewResolver的前綴和后綴,拼裝成一個完整的Url串。

    renderMergedOutputModel() 處理頁面跳轉

  • exposeModelAsRequestAttributes() 把ModelAndView中存放的對象,添加到request中
  • 根據響應的資源獲取Servlet中的RequestDispatcher對象
  • 調用RequestDispatcher的 include 或forward 方法進行響應結果。

  • 想了解更多精彩內容請關注我的公眾號

    本人簡書blog地址:http://www.jianshu.com/u/1f0067e24ff8????
    點擊這里快速進入簡書

    GIT地址:http://git.oschina.net/brucekankan/
    點擊這里快速進入GIT

    總結

    以上是生活随笔為你收集整理的Spring mvc ViewResolver视图解析器实现机制的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。