Springboot(5)模板引擎

1.thymeleaf

(1)在pom.xml中引入thymeleaf;

  <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>

(2)如何关闭thymeleaf缓存

########################################################
###THYMELEAF (ThymeleafAutoConfiguration)
########################################################
#spring.thymeleaf.prefix=classpath:/templates/
#spring.thymeleaf.suffix=.html
#spring.thymeleaf.mode=HTML5
#spring.thymeleaf.encoding=UTF-8
# ;charset=<encoding> is added
#spring.thymeleaf.content-type=text/html
# set to false for hot refresh
spring.thymeleaf.cache=false

(3)编写模板文件.html

编写模板文件src/main/resouces/templates/hello.html:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<title>Hello World!</title>
</head>
<body>
<p th:text="${hello}"></p>
</body>
</html>  

(4)编写访问模板文件controller

@Controller public class TemplateController {

  @RequestMapping("/helloHtml")

   public String helloHtml(Map<String,Object> map){

    map.put("hello","from TemplateController.helloHtml");

    return "hello"; } }//返回模板页面名称

2.freemarker

<#if alist??><#list alist as b>${b.属性!''}</#list><#/if>

<#list map?keys as key>${map[key]}   ${map.get(key)}</#list>

<#assign num = 100 />

${date?string('yyyy-MM-dd')}

(1)在pom.xml中引入freemarker;

  <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>

(2)如何关闭freemarker缓存

spring.freemarker.cache=false

#模板缓存延时
spring.freemarker.settings.template_update_delay=0

(3)编写模板文件.ftl

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
<title>Hello World!</title>
</head>
<body>
<p>${hello}</p>
</body>
</html>

(4)编写访问文件并输出

Configuration cfg = new Configuration(Configuration.getVersion());
String classPath = this.getClass.getResource("/").getPath();
cfg.setDirectoryForTemplateLoading(new File(classPath + "/templates"));
Template template = cfg.getTemplate("test.ftl");
String content = FreeMarkerTemplateUtils.processTemplateInfoString(template,map);//map为绑定数据
InputStream inputStream = IOUtils.toInputStream(content);
FileOutputStream outputStream = new FileOutputStream(new File("test.html"));

常用内建函数:

       处理字符串:
                             substring                                          截取字符串,包头不包尾(下标)
                             cap_first                                          第一个字母大写
                             end_with                                           以什么字母结尾    
                             contains                                            是否包含目标字符串
                             date  datetime  time                       转换成日期格式
                             starts_with                                      以什么字母开头
                             index_of                                          返回某个指定的字符串值在字符串中首次出现的位置(下标)
                             last_index_of                                  获取指定字符出现的最后位置(下标)
                             split                                                  分隔
                             trim                                                  去两端空格
                        处理数字:
                             string                                              
                             x?string("0.##")                          变成小数点后几位
                             round                                              四舍五入
                             floor                                               去掉小数点
                             ceiling                                             近1   变成整数

        ${point?c}                                      point 变成字符串
                        处理list:
                              first:                                              取List值第一个值
                              last:                                                取List值最后一个值
                              seq_contains:                                是否包含指定字符
                              seq_index_of:                               指定字符所在位置
                              size:                                                集合大小
                               reverse:                                          集合倒序排列
                              sort:                                                对集合进行排序
                              sort_by:                                         根据某一个属性排序
                              chunk:                                            分块处理
                        其他:
                              is_string:                                      是否为字符类型
                              is_number:                                    是否为整数类型
                              is_method:                                   是否为方法
                              ():                                                  判断整个变量
                              has_content:                                判断对象是否为空或不存在
                              text?eval:                                   text文本转json对象

posted @ 2018-04-16 15:19  袋子里的袋鼠  阅读(335)  评论(0编辑  收藏  举报