SpringBoot的默认的静态文件目录是:
/static/public/resources/META-INF/resources以是,一样平常我们只须要把静态文件放入前面的四个任逐一个即可,默认都放在static下,对应路径即为:src/main/resources/static。
而从官网文档里也可以获悉,为了实现动态的html,SpringBoot是通过模版引擎进行页面结果渲染的,目前(1.5.15)版本的供应默认配置的模版引擎紧张为:
FreeMarkerGroovyThymeleafMustache
对付模版引擎而言,SpringBoot默认存放模版文件的路径为src/main/resources/templates,当然也可以通过配置文件进行修正。由于不同的模版引擎对应的配置属性不一样,以是在详细讲解模版引擎时,会提到。
当然了,也可以利用jsp,但官方已经不建议利用JSP,本文也会讲解下SpringBoot下JSP的支持,毕竟有很多老的项目还在利用JSP。
知道以上的一些默认配置和知识点后,就可以进行模版引擎的集成利用了。本章紧张讲解常用的FreeMarker、Thymeleaf及JSP三个的集成和利用,其他的基本用法都一样,便是各模版引擎的语法的差异了。
FreeMarker支持
FreeMarker是一款模板引擎,即一种基于模板和要改变的数据,并用来天生输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。
1、POM依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId></dependency>2、application.properties配置加入干系配置:
# 缓存配置 开拓阶段该当配置为false 由于常常会改spring.freemarker.cache=false # 模版后缀名 默认为ftlspring.freemarker.suffix=.html # 文件编码spring.freemarker.charset=UTF-8 # 模版加载的目录spring.freemarker.template-loader-path=classpath:/templates/ # 配置# locale 该选项指定该模板所用的国家/措辞选项# number_format 指定格式化输出数字的格式:currency、# boolean_format 指定两个布尔值的语法格式,默认值是true,false# date_format,time_format,datetime_format 定格式化输出日期的格式# time_zone 设置格式化输出日期时所利用的时区# 数字 千分位标识spring.freemarker.settings.number_format=,##0.00详细的配置可拜会
org.springframework.boot.autoconfigure.freemarker.FreeMarkerProperties类,或者直接IDE直接配置文件点击查看。
3、编写掌握层
FreemarkerController.kava:
//由于是返回页面 以是不能是@RestController@Controller@RequestMapping(\"大众/freemarker\"大众)public class FreemarkerController { //正常和springmvc设置返回参数是意义的用法了 @GetMapping(\公众/map\公众) public String index(String name,ModelMap map) { map.addAttribute(\公众name\"大众, name); map.addAttribute(\公众from\"大众, \"大众lqdev.cn\"大众); //模版名称,实际的目录为:src/main/resources/templates/freemarker.html return \"大众freemarker\"大众; } @GetMapping(\公众/mv\"大众) public String index(String name,ModelAndView mv) { mv.addObject(\公众name\公众, name); mv.addObject(\公众from\"大众, \公众lqdev.cn\公众); //模版名称,实际的目录为:src/main/resources/templates/freemarker.html return \公众freemarker\"大众; }}4、编写模版文件
freemarker.html:
<!DOCTYPE html><html><head lang=\"大众en\"大众> <meta charset=\"大众UTF-8\公众 /> <title>freemarker大略示例</title></head><body><h1>Hello Freemarker</h1><!-- 这里把稳:默认变量都不能为null的, 当参数为null时,会发生非常的 --><!-- 这里后面几个\"大众!\公众避免下,这样便是空缺了 --><h2>名称:${name!},来自:${from}</h2></body></html>
5、启动运用
访问:http://127.0.0.1:8080/freemarker/mv?name=oKong 或者 http://127.0.0.1:8080/freemarker/map?name=oKong 就能查看页面了。
关于一些Freemarker的语法这里就不解释了,大家可到官网查看下:https://freemarker.apache.org/docs/index.html
Thymeleaf支持
Thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的运用开拓。Thymeleaf的紧张目标在于供应一种可被浏览器精确显示的、格式良好的模板创建办法,因此,也可以用作静态建模。你可以利用它创建经由验证的XML与HTML模板,相对付编写逻辑或代码,开拓者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档工具模型)上实行预先制订好的逻辑。
1、pom依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>2、application.properties配置加入干系配置:
# 启用缓存:建议生产开启spring.thymeleaf.cache=false# 建议模版是否存在spring.thymeleaf.check-template-location=true# Content-Type 值spring.thymeleaf.content-type=text/html # 是否启用spring.thymeleaf.enabled=true# 模版编码spring.thymeleaf.encoding=UTF-8# 该当从解析中打消的视图名称列表(用逗号分隔)spring.thymeleaf.excluded-view-names= # 模版模式spring.thymeleaf.mode=HTML5 # 模版存放路径spring.thymeleaf.prefix=classpath:/templates/ # 模版后缀spring.thymeleaf.suffix=.html3、编写掌握层
ThymeleafController.java:
@Controller@RequestMapping(\"大众/thymeleaf\"大众)public class ThymeleafController { // 正常和springmvc设置返回参数是意义的用法了 @GetMapping(\"大众/map\公众) public String index(String name, ModelMap map) { map.addAttribute(\"大众name\"大众, name); map.addAttribute(\公众from\"大众, \"大众lqdev.cn\"大众); // 模版名称,实际的目录为:src/main/resources/templates/thymeleaf.html return \"大众thymeleaf\"大众; } @GetMapping(\"大众/mv\"大众) public ModelAndView index(String name) { ModelAndView mv = new ModelAndView(); mv.addObject(\"大众name\"大众, name); mv.addObject(\"大众from\"大众, \"大众lqdev.cn\公众); // 模版名称,实际的目录为:src/main/resources/templates/thymeleaf.html mv.setViewName(\"大众thymeleaf\"大众); return mv; }}
4、编写模版文件
thymeleaf.html
<!DOCTYPE html><html><head lang=\"大众en\"大众> <meta charset=\"大众UTF-8\"大众 /> <title>thymeleaf大略示例</title></head><body><h1>Hello thymeleaf</h1><!-- 这里把稳:拼接时 变量要单独利用${param},其他的常量利用''包裹 --><h2 th:text=\公众'名称:'+${name}+',来自:'+${from}\"大众>默认值</h2></body></html>
5、启动运用
访问:http://127.0.0.1:8080/thymeleaf/mv?name=oKong 或者 http://127.0.0.1:8080/thymeleaf/map?name=oKong 就能查看页面了。
JSP支持虽然SpringBoot官方已经不建议利用jsp了,但在一些老的项目迁移时,jsp的支持是毋庸置疑的,以是还是须要兼容的。。
1、pom依赖加入
<!-- spring boot 内置tomcat jsp支持 --><dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId></dependency><dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId></dependency>2、application.properties配置加入干系配置:
#jsp 支持spring.mvc.view.suffix=.jspspring.mvc.view.prefix=/WEB-INF/jsp/3、编写掌握层
JspController.java
@Controller@RequestMapping(\"大众/jsp\"大众)public class JspController { //正常和springmvc设置返回参数是意义的用法了 @GetMapping(\"大众/map\公众) public String index(String name,ModelMap map) { map.addAttribute(\"大众name\"大众, name); map.addAttribute(\公众from\公众, \"大众lqdev.cn\"大众); //模版名称,实际的目录为:src/main/webapp/jsp/index.html return \公众index\"大众; } @GetMapping(\公众/mv\公众) public ModelAndView index(String name) { ModelAndView mv = new ModelAndView(); mv.addObject(\"大众name\"大众, name); mv.addObject(\公众from\"大众, \"大众lqdev.cn\"大众); //模版名称,实际的目录为:src/main/webapp/jsp/index.html mv.setViewName(\"大众index\公众); return mv; }}
4、webapp/WEB-INF/jsp目录下编写jsp文件
<%@ page language=\"大众java\"大众 contentType=\"大众text/html; charset=UTF-8\"大众 pageEncoding=\"大众UTF-8\公众%><!DOCTYPE html PUBLIC \公众-//W3C//DTD HTML 4.01 Transitional//EN\"大众 \公众http://www.w3.org/TR/html4/loose.dtd\公众><html><head><meta http-equiv=\公众Content-Type\"大众 content=\"大众text/html; charsetUTF-8\"大众><title>jsp示例</title></head><body><h1>Hello Jsp</h1><h2 >名称:${name},来自:${from}</h2></body></html>5、启动运用
访问:http://127.0.0.1:8080/jsp/mv?name=oKong 或者 http://127.0.0.1:8080/jsp/map?name=oKong 就能查看页面了。
把稳:在利用spring-boot-maven-plugin打包插件时,默认情形下打包的运用时访问不了jsp目录文件的,须要把版本修正为1.4.2.RELEASE版本,同时pom中加入resource配置:
<resources> <!-- 打包时将jsp文件拷贝到META-INF目录下 --> <resource> <!-- 指定resources插件处理哪个目录下的资源文件 --> <directory>src/main/webapp</directory> <!--把稳这次必须要放在此目录下才能被访问到 --> <targetPath>META-INF/resources</targetPath> <includes> <include>/</include> </includes> </resource><!-- <resource> 指定resources插件处理哪个目录下的资源文件 <directory>src/main/resources/static</directory> 把稳这次必须要放在此目录下才能被访问到 <targetPath>META-INF/resources/static</targetPath> <includes> <include>/</include> </includes> </resource> --> <resource> <directory>src/main/resources</directory> <includes> <include>/</include> </includes><!-- <excludes> <exclude>src/main/resources/static/</exclude> </excludes> --> <filtering>false</filtering> </resource></resources>总结
本章紧张是讲解利用模版引擎进行动态页面实现功能,对付有此须要的同学可以去看下利用的模版引擎的干系利用教程,这里就不多加阐述。目前互联网上很多大佬都有springboot系列教程,如有雷同,请多多包涵,若文中有所缺点之处,还望提出!
须要看SpringBoot系列前十四章需移步本人主页浏览。
SpringBoot系列:
SpringBoot深入解析——基于 Docker 的大略支配(十四)
https://www.toutiao.com/i6597750315166990862/
SpringBoot深入解析——基于 Postman的RESTful 接口测试(十五)
https://www.toutiao.com/i6597747954155520515/