Freemark基础

 

目录

freemark介绍

生成静态文件

ftl指令

集合质量<#list>

map的遍历

内建函数

运算符

Freemark的缓存问题

整合spring的Freemark


前言

Freemark页面静态化技术,把页面静态化,这样就能把项目部署到linux下的Nginx下

Nginx能够承载高并发

 

freemark介绍

引入依赖

Freemark基础_第1张图片

模版中的元素

Freemark基础_第2张图片

 

生成静态文件

Freemark基础_第3张图片

Freemark基础_第4张图片

Freemark基础_第5张图片

Freemark基础_第6张图片

 

ftl指令

定义数据指令<#assign>

Freemark基础_第7张图片

模版嵌套指令<#include>

Freemark基础_第8张图片

 

条件判断指令<#if>

Freemark基础_第9张图片

 

集合质量<#list>

Freemark基础_第10张图片

Freemark基础_第11张图片

 

map的遍历

Freemark基础_第12张图片

有2种形式可以直接使用

Freemark基础_第13张图片

Freemark基础_第14张图片

遍历可以通过<#list>,只不过需要加一个问号 keys  as  k,来获取map里的key

Freemark基础_第15张图片

 

内建函数

size函数

size为内建函数,goodsList是一个集合

Freemark基础_第16张图片

 

转换json函数

Freemark基础_第17张图片

 

日期格式化函数

Freemark基础_第18张图片

Freemark基础_第19张图片

 

数字转字符串函数

Freemark基础_第20张图片

 

空值处理函数

Freemark基础_第21张图片

Freemark基础_第22张图片

 

运算符

Freemark基础_第23张图片

 

Freemark的缓存问题

参考 https://www.jb51.net/article/83220.htm

FreeMarker缓存模版的意思就是,当你通过getTemplate方法获取一个模版的时候,FreeMarker不仅会返回一个Template对象,而且会缓存该对象,当你下一次以相同的路径请求模版的时候,它就会返回缓存中的模版对象。如果你改变了模版文件,那么当你下一次获取模版的时候,FreeMarker会自动重新加载,重新解析模版。虽然如此,但是如果直接判断一个文件是否修改过是一个耗时的操作,那么FreeMarker 在Configuration 对象级别提供了一个配置参数“update delay”。该参数的意思是FreeMarker多长时间去判断一次模版的版本,默认设置是5秒钟,也就是每个5秒就会判断模版是否经过修改,如果你想实时的判断,那么设置该参数为0。另外一点需要注意,并不是所有的加载器都支持这种判断方式,举例来说基于class-loader 的模版加载器就不会发现你修改过模版文件。

对于删除缓存中的模版FreeMarker 是这么做的,你可以使用Configuration 对象方法clearTemplateCache 以手工的方式清楚缓存中的模版对象。而实际上缓存部分可以作为一个组建加入到FreeMarker 中(也就是它可以使用第三方缓存方案)你可以通过设置cache_storage 这个参数来实现。对大多数开发者来FreeMarker 自带的freemarker.cache.MruCacheStorage 实现已经足够了。这个缓存使用2 个级别的Most Recently Used(最近最多用)策略。在第一个级别,所有的缓存条目都是使用强引用(strongly referenced:条目并不会被JVM 所清楚,与其相对的弱引用softly reference)直到达到最大时间,那些最近最少使用的条目就会被迁移到二级缓存。在这个级别条目都是使用弱引用直到达到过期。若引用与强引用的区域的大小是可以在构造函数中设置的,例如你想把强引用区域设置为20,弱引用区域设置为250,那你可以使用以下代码:

cfg.setCacheStorage(new freemarker.cache.MruCacheStorage(20, 250))

 

由于MruCacheStorage 是默认的缓存实现,那么你也可以这样设置:

cfg.setSetting(Configuration.CACHE_STORAGE_KEY,"strong:20, soft:250");

 

当你创建一个新的Configuration时,其默认使用MruCacheStorage缓存实现且默认的值maxStrongSize等于0,maxSoftSize等于Integer.MAX_VALUE(也就是理论最大值)。但是对于高负荷的系统来说,我们建议maxStrongSize 设置成一个非0 的数值,不然会导致频繁的重新加载,重新解析模版。

 

 

整合spring的Freemark

在spring 配置文件里加入,那么我们创建文件的时候就能节省一些步骤

Freemark基础_第24张图片

第1 是输出文件的目录,从配置文件里读取

第2 是拼接输出的文件路径,goodsId是商品的id

Freemark基础_第25张图片

还需要把数据传给页面

Freemark基础_第26张图片


 

你可能感兴趣的:(java,web)