通過上幾章的介紹知道了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...