SpringMVC之原始碼分析 View(一)

2021-09-13 17:11:30 字數 1658 閱讀 6113

通過上幾章的介紹知道了viewresolver的作用,即viewresolver就是把handler返回的邏輯檢視名稱解析為檢視view物件。進而通過view物件的檢視渲染把最終的結果展現給使用者。

view檢視渲染的原理,簡單說就是把模型資料填充到檢視模板,最終交由servlet的response進行渲染展示。

spring mvc運用模板技術把資料和檢視分開,同時提供支援很多的模板技術,比如:internalresourceview(jstlview)、freemarkerview、thymeleaf等等。

本系列文章是基於spring5.0.5release。

以internalresourceview為例進行分析,該類解析jsp檢視模板,主要涉及類和介面如下:

view介面是spring mvc提供的檢視渲染介面,定義了render方法對給定的模型資料進行檢視渲染,原始碼如下:

public inte***ce view
abstractview是實現view介面的抽象類,實現了render方法,原始碼如下:

// 建立整合後需要返回給瀏覽器的model

mapmergedmodel = createmergedoutputmodel(model, request, response);

// 設定response 報文頭

prepareresponse(request, response);

// 渲染資料,通過模板方法由子類實現,如internalresourceview

rendermergedoutputmodel(mergedmodel, getrequesttoexpose(request), response);

}... ...}

該類繼承自abstractview,並實現rendermergedoutputmodel方法,原始碼如下:

// 直接返回使用者資源

if (useinclude(request, response))

rd.include(request, response);

}// 攜帶request和response跳轉到另乙個控制器方法

else

rd.forward(request, response);}}

至此,view渲染檢視的大致流程結束,也就是spring mvc基本完成了整個流程,剩下的渲染工作交由servlet去處理。

本章就view檢視渲染進行了簡單的分析,spring 提供了眾多的view實現,有興趣的童鞋可以繼續了解。

SpringMVC之原始碼分析 啟動過程

類的繼承關係 spring mvc前端控制器dispatcherservlet frameworkservlet httpservletbean httpservlet httpservlet是servlet規範中的核心類,實現servlet介面,繼承此類用於處理使用者請求。httpservletb...

SpringMVC 原始碼分析

springmvc之 springmvc的引數匹配原始碼分析 使用 modelattribute 進行引數注入 springmvc方法返回值詳解 原始碼流程 public class implements configuration componentscan com enableaspectjau...

SpringMVC原始碼分析 二

第九章 spring aop 原始碼解析 二 這一章來簡單的介紹一下springmvc的高階應用 過濾器 filter 對request請求起到過濾的作用,作用在servlet之前,如果配置為 可以對所有的資源訪問 servlet js css靜態資源等 進行過濾處理 interceptor 是sp...