一区二区在线电影_99综合久久_一区二区三区中文字幕_а√天堂资源国产精品

SpringMVC框架 第6章 視圖解析

6視圖解析

6.1 SpringMVC如何解析視圖概述

  • 不論控制器返回一個String,ModelAndView,View都會轉換為ModelAndView對象,由視圖解析器解析視圖,然后,進行頁面的跳轉。 ?

  • 視圖解析源碼分析:重要的兩個接口

  • 斷點調試源碼

  • 流程圖

6.2 視圖和視圖解析器

  • 請求處理方法執行完成后,最終返回一個 ModelAndView 對象。對于那些返回 String,View 或 ModeMap 等類型的處理方法,Spring MVC 也會在內部將它們裝配成一個 ModelAndView 對象,它包含了邏輯名和模型對象的視圖
  • Spring MVC 借助視圖解析器ViewResolver)得到最終的視圖對象(View),最終的視圖可以是 JSP ,也可能是 Excel、JFreeChart等各種表現形式的視圖
  • 對于最終究竟采取何種視圖對象對模型數據進行渲染,處理器并不關心,處理器工作重點聚焦在生產模型數據的工作上,從而實現 MVC 的充分解耦

6.3 視圖

  • 視圖的作用是渲染模型數據,將模型里的數據以某種形式呈現給客戶。
  • 為了實現視圖模型和具體實現技術的解耦,Spring 在 springframework.web.servlet 包中定義了一個高度抽象的 View接口:

  • 視圖對象由視圖解析器負責實例化。由于視圖是無狀態的,所以他們不會有線程安全的問題

6.4 常用的視圖實現類

6.5 JstlView

6.6 視圖解析器

  • SpringMVC 為邏輯視圖名的解析提供了不同的策略,可以在 Spring WEB 上下文中配置一種或多種解析策略并指定他們之間的先后順序。每一種映射策略對應一個具體的視圖解析器實現類。
  • 視圖解析器的作用比較單一:將邏輯視圖解析為一個具體的視圖對象。
  • 所有的視圖解析器都必須實現 ViewResolver 接口:

6.7 常用的視圖解析器實現類

  • 程序員可以選擇一種視圖解析器或混用多種視圖解析器
  • 每個視圖解析器都實現了 Ordered 接口并開放出一個 order 屬性,可以通過 order 屬性指定解析器的優先順序order ?越小優先級越高
  • SpringMVC 會按視圖解析器順序的優先順序對邏輯視圖名進行解析,直到解析成功并返回視圖對象,否則將拋出 ServletException 異常
  • InternalResourceViewResolver
    • JSP 是最常見的視圖技術,可以使用 InternalResourceViewResolve作為視圖解析器:

.

 

6.8?mvc:view-controller標簽

1)若希望直接響應通過 SpringMVC 渲染的頁面,可以使用 mvc:view-controller?標簽實現

<!-- 直接配置響應的頁面:無需經過控制器來執行結果 -->

<mvc:view-controller path="/success" view-name="success"/>

????2)請求的路徑:

http://localhost:8080/SpringMVC_02_View/success

3)配置<mvc:view-controller>會導致其他請求路徑失效

???解決辦法:

<!-- 在實際開發過程中都需要配置mvc:annotation-driven標簽,后面講,這里先配置上 -->

<mvc:annotation-driven/>? ? ?

6.9 自定義視圖【了解】

  • 自定義視圖(需要加入SpringMVC,那么,一定需要實現框架的接口)
  • 若希望使用 Excel 展示數據列表,僅需要擴展 SpringMVC 提供的 AbstractExcelView或 AbstractJExcelView 即可。
  • 實現 buildExcelDocument() 方法,在方法中使用模型數據對象構建 Excel 文檔就可以了。
  • AbstractExcelView 基于 POI API,而 AbstractJExcelView 是基于 JExcelAPI 的。
  • 視圖對象需要配置 IOC 容器中的一個 Bean,使用 BeanNameViewResolver 作為視圖解析器即可
  • 若希望直接在瀏覽器中直接下載 Excel 文檔,則可以設置響應頭 Content-Disposition的值為 attachment;filename=xxx.xls

6.9.1 實驗代碼

6.9.2 源碼參考

6.10重定向

  • return "forward:/index.jsp"

武城县| 江津市| 济南市| 南皮县| 灵川县| 潮州市| 离岛区| 策勒县| 西林县| 云和县| 德庆县| 湖口县| 高雄县| 建宁县| 化隆| 鹤山市| 栾川县| 游戏| 建阳市| 沙湾县| 大城县| 宿州市| 高唐县| 祁东县| 武邑县| 滁州市| 兴城市| 峨边| 三原县| 高碑店市| 介休市| 尼勒克县| 芒康县| 平凉市| 夏河县| 丽江市| 沙洋县| 万载县| 囊谦县| 蒲江县| 凌源市|