Spring Boot應(yīng)用配置常用相關(guān)視圖解析器詳解
SpringBoot的自動(dòng)裝配裝配了視圖解析器了嗎?
我們可以看到SpringBoot自動(dòng)裝配的WebMvcAutoConfiguration類中,裝配了以下關(guān)于ViewResolver(視圖解析器)的類??梢钥吹絊pringBoot已經(jīng)自動(dòng)裝配了InternalResourceViewResolver類,又是通過(guò)外部資源配置的方式來(lái)配置此視圖解析器this.mvcProperties.getView().getPrefix()
,所以我們可以在application.properties
文件配置此視圖解析器用于解析JSP。
@Bean @ConditionalOnMissingBean public InternalResourceViewResolver defaultViewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix(this.mvcProperties.getView().getPrefix()); resolver.setSuffix(this.mvcProperties.getView().getSuffix()); return resolver; }
SpringBoot使用JSP
SpringBoot在自動(dòng)裝配的時(shí)候默認(rèn)就已經(jīng)將JSP的視圖解析器InternalResourceViewResolver裝配。所以我們只需要進(jìn)行配置使用即可。在SpringBoot中使用JSP比較麻煩一點(diǎn),或許是我的個(gè)人理解存在什么誤區(qū),如果有朋友知道更好的配置方法,請(qǐng)留言給我。
第一步:創(chuàng)建自定義webapp目錄,如下所示
第二步:將此文件夾配置成項(xiàng)目的WEB模塊
第三步:導(dǎo)入JSP相關(guān)依賴
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>
第四步:在SpringBoot的屬性文件application.properties
中配置JSP的路由
spring.mvc.view.prefix=/ spring.mvc.view.suffix=.jsp
第五步:修改Maven的pom.xml文件打包方式改成war(默認(rèn)打包Jar,打包Jar包的方式使用Idea啟動(dòng)是沒(méi)什么問(wèn)題,如果單獨(dú)運(yùn)行Jar包就找不到JSP文件,如果改成War包即可)
<packaging>war</packaging>
SpringBoot中使用Thymeleaf
SpringBoot官方是推薦使用thymeleaf作為優(yōu)選的視圖解析器,所以SpringBoot對(duì)Thymeleaf的支持非常好,這里僅僅演示SpringBoot如何選用Thymeleaf作用默認(rèn)視圖解析器。
第一步:導(dǎo)入Thymeleaf的依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
第二步:創(chuàng)建存放Thymeleaf模板文件夾,在Resources目錄下創(chuàng)建templates目錄
這個(gè)文件夾的名字可不是我么隨便命名的啊,是SpringBoot在自動(dòng)裝配Thymeleaf視圖解析器的時(shí)候就已經(jīng)預(yù)定義好了,我們看一下它的定義源碼。
@ConfigurationProperties(prefix = "spring.thymeleaf") public class ThymeleafProperties { private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8; public static final String DEFAULT_PREFIX = "classpath:/templates/"; public static final String DEFAULT_SUFFIX = ".html"; }
SpringBoot中使用Freemark
第一步:導(dǎo)入Maven依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
第二步:創(chuàng)建存放Freemark模板文件夾,在Resources目錄下創(chuàng)建templates目錄
@ConfigurationProperties(prefix = "spring.freemarker") public class FreeMarkerProperties extends AbstractTemplateViewResolverProperties { public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/"; public static final String DEFAULT_PREFIX = ""; public static final String DEFAULT_SUFFIX = ".ftl"; }
我們可以看到SpringBoot在自動(dòng)裝配Freemarker視圖解析器默認(rèn)是將模板文件放在classpath:/templates/路徑內(nèi),我們同樣可以在SpringBoot的配置文件中自行配置。
小提示:我在寫Freemark視圖解析器的時(shí)候并沒(méi)有將第一個(gè)JSP內(nèi)部資源解析器給刪除掉,所以他們是并存的,所以我們可以知道SpringBoot在裝配他們的時(shí)候給予設(shè)定了優(yōu)先級(jí)順序。從下圖可以看到他們的優(yōu)先級(jí)順序;Freemarker>Thymeleaf>InternalResourceViewResolver`
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
解決SpringBoot ClassPathResource的大坑(FileNotFoundException)
這篇文章主要介紹了解決SpringBoot ClassPathResource的大坑(FileNotFoundException),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06mybatis 中 foreach collection的用法小結(jié)(三種)
這篇文章主要介紹了mybatis 中 foreach collection的用法小結(jié)(三種),需要的朋友可以參考下2017-10-10Java貪心算法之Prime算法原理與實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Java貪心算法之Prime算法原理與實(shí)現(xiàn)方法,簡(jiǎn)單描述了Prime算法的概念、原理、實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2017-09-09Java Email郵件發(fā)送簡(jiǎn)單實(shí)現(xiàn)介紹
電子郵件從用戶電腦的郵件軟件,例如Outlook,發(fā)送到郵件服務(wù)器上,可能經(jīng)過(guò)若干個(gè)郵件服務(wù)器的中轉(zhuǎn),最終到達(dá)對(duì)方郵件服務(wù)器上,收件方就可以用軟件接收郵件2022-11-11使用Mybatis Generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件的方法
這篇文章主要介紹了使用Mybatis Generator結(jié)合Ant腳本快速自動(dòng)生成Model、Mapper等文件的方法的相關(guān)資料,需要的朋友可以參考下2016-06-06Spring ApplicationListener的使用詳解
這篇文章主要介紹了Spring ApplicationListener的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06SpringBoot實(shí)現(xiàn)接口數(shù)據(jù)的加解密功能
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)接口數(shù)據(jù)的加解密功能,對(duì)接口的加密解密操作主要有兩種實(shí)現(xiàn)方式,文中給大家詳細(xì)介紹,需要的朋友可以參考下2019-10-10通過(guò)代理類實(shí)現(xiàn)java連接數(shù)據(jù)庫(kù)(使用dao層操作數(shù)據(jù))實(shí)例分享
java通過(guò)代理類實(shí)現(xiàn)數(shù)據(jù)庫(kù)DAO操作代碼分享,大家參考使用吧2013-12-12