FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
FreeMarker的一些亮点
强大的模板语言:条件块,迭代,赋值,字符串和算术运算和格式化,宏和函数,包括其他模板,默认转义(可选)等等
多用途和轻量级:零依赖性,任何输出格式,都可以从任何地方加载模板(可插入),多种配置选项
国际化/本地化感知:区域设置敏感数字和日期/时间格式化,本地化模板变化。
XML处理功能:将XML DOM-s放入数据模型并遍历它们,甚至以声明方式处理它们通用数据模型:Java对象通过可插入适配器作为变量树暴露给模板,决定模板如何看待它们
什么是静态页面化技术
在访问新闻、活动、商品详情页面时,路径可以是xx【id】.html,服务器端根据请求id,动态生成html网页,下次访问数据时,无需再查询数据,直接将html静态页面返回,目的是减少数据库交互,提高查询性能
将动态数据访问,缓存为一个静态html页面,提高查询效率
Freemarker使用入门
1、Freemarker
Struts2默认使用freemarker实现自定义标签模板,项目导入struts2就已经导入freemarker jar包
模板文件+java数据对象 输出(任何格式文本)
Freemarker模板文件,通常扩展名称.ftl(使用.html .jsp都可以)
1)安装freemarker eclipse编辑插件
将”freemarker_eclipse plugins” 复制到STS的dropins文件夹,重启开发工具
2)编辑freemarker的模板文件
通常模板文件放在WEB-INF下,或者classes下
变量是${}代替的
入门代码
/不存在
//模板 + 数据模型 = 输出
//1、创建Configuration,生成模板实例
Configuration configguration = new Configuration(Configuration.VERSION_2_3_22);
//拿到文件路径
configguration.setDirectoryForTemplateLoading
(new File(ServletActionContext.getServletContext().getRealPath("/WEB-INF/promotion_Freemarker")));
System.out.println(ServletActionContext.getServletContext().getRealPath("/WEB-INF/promotion_Freemarker"));
//2拿到指定模板
Template template = configguration.getTemplate("promotion_detail.ftl");
//3填充数据
Map<String, Object> map = new HashMap<String, Object>();
map.put("promotion", promotion);
//合并并输出
FileUtils.copyFile(htmlFile, ServletActionContext.getResponse().getOutputStream());