摘要:配置視圖解析器所采取的方式會(huì)在視圖名上加上前綴和后綴,進(jìn)而確定一個(gè)應(yīng)用中得視圖資源和物理路徑。
SpringMVC之ViewResolver(三)
前言:在MVC架構(gòu)中大家都知道Model、View 和 Controller,然而在我以前的理解中視圖層就是展示數(shù)據(jù)給用戶(hù),給用戶(hù)提供數(shù)據(jù)輸入的終端,然而View做的事遠(yuǎn)不止這么多, 以springMVC為例, View還做了視圖解析的事情, 將視圖模板解析為相應(yīng)的視圖, 還要對(duì)視圖進(jìn)行渲染,雖然說(shuō)出來(lái)只有一句話(huà),可是后面做的事情可不止一點(diǎn)半點(diǎn)。其實(shí)這歸結(jié)為View應(yīng)該做的事情也不難理解,因?yàn)镃ontroller在完成了視圖名的定位之后控制層的工作已經(jīng)完成了,而模型層并不參與業(yè)務(wù)流程的處理, 那么剩下的工作自然都屬于視圖層了。配置jsp視圖解析器
InternalResourceViewResolver所采取的方式會(huì)在視圖名上加上前綴和后綴,進(jìn)而確定一個(gè)web應(yīng)用中得視圖資源和物理路徑。
因?yàn)閃EB-INF路徑下的資源在客戶(hù)端是不能訪(fǎng)問(wèn)的,所以通常的實(shí)踐是將jsp文件放到/WEB-INF/views/目錄下, 避免客戶(hù)端對(duì)其直接訪(fǎng)問(wèn), 這樣就只需要配置前綴和后綴名,就可以找到相應(yīng)的視圖了, 例如以下代碼:
@Bean public ViewResolver viewResolver(){ InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("WEB-INF/views/"); resolver.setPrefix(".jsp"); return resolver; }
當(dāng)控制器中返回的是 index 的時(shí)候, 這時(shí)它就會(huì)將視圖名解析為jsp文件,它會(huì)去/WEB-INF/views/index.jsp, 控制器中返回的是books/detail 的時(shí)候?qū)?huì)被解析為/WEB-INF/views/books/detail.jsp,這時(shí)我們就可以很方便的組織目錄結(jié)構(gòu)了。
配置特殊的視圖解析器當(dāng)控制器將模型數(shù)據(jù)打包之后,它接下來(lái)將數(shù)據(jù)模型返回給視圖輸出, 并跳轉(zhuǎn)頁(yè)面,但是在這里為了將控制器與視圖解耦,所以Controller甚至不知道數(shù)據(jù)返回的視圖不是jsp或者是其他別的格式,只返回一個(gè)視圖名,那么后續(xù)的工作就應(yīng)該由視圖解析器來(lái)做了。例如:
public class ExcelView extends AbstractXlsxView { @Override protected void buildExcelDocument( Mapmap, Workbook workbook, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { workbook.write(httpServletResponse.getOutputStream()); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/70934.html
摘要:概述本節(jié)學(xué)習(xí)下的功能,簡(jiǎn)單來(lái)說(shuō),該類(lèi)的作用就是把多個(gè)視圖解析器進(jìn)行組裝,內(nèi)部使用存儲(chǔ)配置使用的視圖解析器??偨Y(jié)本章介紹了類(lèi),根據(jù)測(cè)試,了解到屬性不影響中配置使用的視圖解析器順序。 概述 本節(jié)學(xué)習(xí)下ViewResolverComposite的功能,簡(jiǎn)單來(lái)說(shuō),該類(lèi)的作用就是把多個(gè)ViewResolver視圖解析器進(jìn)行組裝,內(nèi)部使用list存儲(chǔ)配置使用的視圖解析器。 本系列文章是基于Spri...
摘要:與一樣,該類(lèi)繼承抽象類(lèi),并且通過(guò)外部的屬性文件定義邏輯視圖名稱(chēng)與真正的視圖對(duì)象的關(guān)系,屬性文件默認(rèn)是下的,可以通過(guò)或?qū)傩詠?lái)指定,該屬性指的是文件的基名稱(chēng),也就是說(shuō)以屬性值開(kāi)頭的屬性文件。 概述 本章再學(xué)習(xí)另外兩個(gè)ViewResolver,分別是XmlViewResolver和ResourceBundleViewResolver,從功能上說(shuō),這兩個(gè)視圖解析器都是從外部資源文件中查找視圖V...
摘要:概述上篇學(xué)習(xí)了視圖解析器作用及處理流程,為我們提供了豐富的視圖解析器見(jiàn)下圖本系列文章是基于。該視圖解析器是根據(jù)處理器返回的邏輯視圖名稱(chēng),在應(yīng)用上下文中查找該名稱(chēng)的視圖對(duì)象視圖對(duì)象就是的對(duì)象。 概述 上篇學(xué)習(xí)了Spring MVC ViewResolver視圖解析器作用及處理流程,Spring為我們提供了豐富的視圖解析器(見(jiàn)下圖):showImg(https://segmentfault...
摘要:概述本章開(kāi)始進(jìn)入另一重要的組件,即視圖組件,處理視圖組件使用兩個(gè)主要的接口是和。接口的作用是用于處理視圖進(jìn)行渲染。延用之前的介紹流程,本章分兩部分進(jìn)行闡述啟動(dòng)初始化和請(qǐng)求處理。 概述 本章開(kāi)始進(jìn)入另一重要的組件,即視圖組件,Spring MVC處理視圖組件使用兩個(gè)主要的接口是ViewResolver和View。根據(jù)名稱(chēng)可知,ViewResolver即視圖解析器,其作用是把邏輯視圖名稱(chēng)解...
摘要:概述本章繼續(xù)學(xué)習(xí)另一個(gè)實(shí)現(xiàn)類(lèi)解析器,該類(lèi)的主要作用是根據(jù)同一請(qǐng)求的某些策略,選擇對(duì)應(yīng)的進(jìn)行渲染。可以把理解為適配器,對(duì)不同類(lèi)型進(jìn)行適配。值得注意的是處理的為同一個(gè)。本系列文章是基于。實(shí)戰(zhàn)需求目標(biāo)實(shí)現(xiàn)后綴名或參數(shù)控制,顯示不同的視圖。 概述 本章繼續(xù)學(xué)習(xí)ViewResolver另一個(gè)實(shí)現(xiàn)類(lèi)ContentNegotiatingViewResolver解析器,該類(lèi)的主要作用是根據(jù)同一請(qǐng)求的某...
閱讀 1464·2021-09-02 10:19
閱讀 1156·2019-08-26 13:25
閱讀 2170·2019-08-26 11:37
閱讀 2493·2019-08-26 10:18
閱讀 2739·2019-08-23 16:43
閱讀 3160·2019-08-23 16:25
閱讀 854·2019-08-23 15:53
閱讀 3365·2019-08-23 15:11