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;${someValue} 2,处理不存在的scalars值:${something!“nothing”}
3,输出hash中的属性:${someBean.someValue} 4,输出hash中的方法;${someBean.someMethod()}
5,处理不存在的hash调用:${(obj.prop.something)!nothing} 6,处理scalars的内建函数:${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;


1
2
3
4
5
6
1&lt;dependency&gt;
2           &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
3           &lt;artifactId&gt;spring-boot-starter-freemarker&lt;/artifactId&gt;
4       &lt;/dependency&gt;
5
6

(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


1
2
3
4
5
6
7
8
9
10
1@Controller
2public class Hello {
3    @RequestMapping(&quot;/hello1&quot;)
4    public String hello(Model model){
5      model.addAttribute(&quot;msg&quot;,&quot;hello,freemarker&quot;);
6        return &quot;hello1&quot;;
7    }
8}
9
10

2.可以手动配置


1
2
3
4
5
6
7
1spring.freemarker.charset=UTF-8
2spring.freemarker.suffix=.ftl
3spring.freemarker.content-type=text/html; charset=utf-8
4spring.freemarker.template-loader-path=classpath:/templates
5spring.mvc.static-path-pattern=/static/**
6
7

3.启动项目(运行main方法)
4.访问页面
springboot集成freemarker

给TA打赏
共{{data.count}}人
人已打赏
安全技术

C++ lambda表达式

2022-1-11 12:36:11

安全技术

“让开发者爱上安全测试”系列之 “源码安全测试”终级玩法

2016-12-26 13:20:35

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索