Freemark基础

 

目录

freemark介绍

生成静态文件

ftl指令

集合质量<#list>

map的遍历

内建函数

运算符

Freemark的缓存问题

整合spring的Freemark


前言

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

Nginx能够承载高并发

freemark介绍

引入依赖

模版中的元素

生成静态文件

ftl指令

定义数据指令<#assign>

模版嵌套指令<#include>

条件判断指令<#if>

集合质量<#list>

map的遍历

有2种形式可以直接使用

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

内建函数

size函数

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

转换json函数

日期格式化函数

数字转字符串函数

空值处理函数

运算符

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 配置文件里加入,那么我们创建文件的时候就能节省一些步骤

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

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

还需要把数据传给页面


 

发布了143 篇原创文章 · 获赞 36 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/90479000