springboot集成freemarker

一.静态资源:
1,默认情况下,Springboot会从classpath下的/static、/public、/resources、/META-INF/resources下加载静态资源;
2,可以通过修改spring.resources.staticLocations来修改静态资源加载地址;
3,因为应用是打成jar包,所以之前的src/main/webapp不会加载;
二.不推荐使用jsp的原因是因为springboot对jsp的支持不好
三.由于在内嵌的servlet容器中使用jsp会有一些问题,所以springboot建议使用第三方模板语言,推荐使用freemarker,velocity和thymeleaf;
以上几种模板页面默认从src/main/resources/templates加载;

四.freemarker的基本使用:
1,FreeMarker中的模型:hash(如map或自定义对象);scalars(存储的简单值);sequence(数组或者列表等可遍历对象);
2,FreeMarker模板中的内容分类:
1,插值;
2,FTL指令;
3,注释:<#-- -->
4,标准文本,除了以上三种,其他都是静态文本,原样输出;
3,插值的使用:
1,直接输出scalars;s o m e V a l u e 2 , 处 理 不 存 在 的 s c a l a r s 值 : {someValue} 2,处理不存在的scalars值:someValue2scalars{something!“nothing”}
3,输出hash中的属性:s o m e B e a n . s o m e V a l u e 4 , 输 出 h a s h 中 的 方 法 ; {someBean.someValue} 4,输出hash中的方法;someBean.someValue4hash{someBean.someMethod()}
5,处理不存在的hash调用:( o b j . p r o p . s o m e t h i n g ) ! n o t h i n g 6 , 处 理 s c a l a r s 的 内 建 函 数 : {(obj.prop.something)!nothing} 6,处理scalars的内建函数:(obj.prop.something)!nothing6scalars{str?substring(2)}等
7.,常见的FTL指令:
1,<#if>…<#elseif>…<#else>…</#if>
2,<#list sequence as item>…</#list>

#include:引入一个模板;
#assign:在Freemarker上下文中创建一个变量并赋值
五.常用配置
template_update_delay=1 ##模版更新时间,这里配置是1秒更新一次,正式环境,模版不会改变,可以将这个值设很大,提高效率.就是被这个参数害死了.老是不更新.
locale=zh_CN ##中国
default_encoding=utf-8 ##编码utf8
url_escaping_charset=utf-8 ##url编码utf8
date_format=yyyy-MM-dd ##显示日期格式
time_format=HH:mm:Ss ##显示时间格式
datetime_format=yyyy-MM-dd ##显示日期格式
number_format=#0.##### ##数字显示格式hi.

#template_update_delay=1
datetime_format=yyyy-MM-dd HH:mm:ss
date_format=yyyy-MM-dd
time_format=HH:mm:ss
number_format=0.######;
boolean_format=true,false
auto_import="/common/index.ftl" as ui 自动引入
whitespace_stripping=true
default_encoding=UTF-8
tag_syntax=auto_detect
url_escaping_charset=UTF-8
六.SpringBoot中集成freemarker
1,引入spring-boot-starter-freemarker,自动引入freemarker和spring-context-support;

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

(2)springboot提供的freemarker配置:

1,spring.freemarker.enabled=true:是否开启freemarker支持;
2,spring.freemarker.allow-request-override:是否允许request中的属性覆盖model中同名属性;默认false;
3,spring.freemarker.allow-session-override:是否允许session中的属性覆盖model中同名属性;默认false;
4,spring.freemarker.cache:是否支持模板缓存;默认false;
5,spring.freemarker.charset:模板编码
6,spring.freemarker.content-type=text/html:模板contenttype;
7,spring.freemarker.expose-request-attributes:是否开启request属性expose,默认false;
8,spring.freemarker.expose-session-attributes:是否开启session属性expose,默认false;
9,spring.freemarker.expose-spring-macro-helpers:是否开启spring的freemarker宏支持;默认为false;
10,spring.freemarker.prefer-file-system-access:默认为true,支持实时检查模板修改;
11,spring.freemarker.prefix:加载模板时候的前缀;
12,spring.freemarker.settings.*:直接配置freemarker参数
13,spring.freemarker.suffix:模板文件后缀;
14,spring.freemarker.template-loader-path=classpath:/templates/:模板加载地址
(3)代码
1.controller

@Controller
public class Hello {
    @RequestMapping("/hello1")
    public String hello(Model model){
      model.addAttribute("msg","hello,freemarker");
        return "hello1";
    }
}

2.可以手动配置

spring.freemarker.charset=UTF-8
spring.freemarker.suffix=.ftl
spring.freemarker.content-type=text/html; charset=utf-8
spring.freemarker.template-loader-path=classpath:/templates
spring.mvc.static-path-pattern=/static/**

3.启动项目(运行main方法)
4.访问页面
在这里插入图片描述


版权声明:本文为weixin_41588751原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。