
模板引擎-FreeMarker
发布日期:2021-05-08 20:22:05
浏览次数:25
分类:精选文章
本文共 2400 字,大约阅读时间需要 8 分钟。
模板引擎是前后端分离的重要工具,用于将数据与界面有效解耦。FreeMarker作为一款流行的模板引擎,采用FTL脚本语言,虽然执行效率较低,但在开发效率和扩展性方面表现优异。以下是FreeMarker的使用指南。
FreeMarker创建
首先,下载并引入freemarker-2.3.23.jar
包,创建核心配置对象并加载模板。例如:
Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);configuration.setClassForTemplateLoading(Test.class, "");Template template = configuration.getTemplate("freemarker1.ftl");
创建一个数据集合并向模板输出:
Mapmap = new HashMap<>();map.put("description", "百度");map.put("url", "http://www.baidu.com/");template.process(map, new OutputStreamWriter(System.out));
创建FreeMarker脚本时,文件名需以.ftl
结尾,运行程序即可查看结果。
FTL数据获取
FreeMarker从Map集合获取数据,模板中可通过以下方式访问:
${key}
:获取key对应值,支持JavaBean属性或Map键值。${key!default}
:获取默认值,若键不存在则使用default。${key?string(...)}
:格式化输出,适用于日期和金额。
条件判断
使用<#if>
和<#switch>
标签进行条件判断:
<#if computer.state == 1> 状态:使用中<#elseif computer.state == 2> 状态:闲置<#elseif computer.state == 3> 状态:已作废
循环迭代
FreeMarker支持List和Map集合的迭代:
- List循环:
<#list computers as c> 序号:${c_index + 1} SN:${c.sn} 型号:${c.model} 状态:<#switch c.state> <#case 1> 使用中 <#case 2> 闲置 <#case 3> 已作废 用户:<#if c.user??> ${c.user} 采购日期:${c.dop?string("yyyy-MM-dd")} 采购价格:${c.price?string("0.00")}
- Map循环:
<#list computer_map?keys as k> ${k}-${computer_map[k].model} ${computer_map[k].price?string("0.00")}
FreeMarker与Servlet结合开发
在web.xml
中配置FreeMarkerServlet:
freemarker freemarker.ext.servlet.FreemarkerServlet TemplatePath /WEB-INF/ftl DefaultEncoding UTF-8 freemarker *.ftl
FreeMarkerServlet支持将请求转发给FTL模板,开发时需在Servlet中设置数据并请求转发。
示例开发
创建EmployeeServlet:
@WebServlet(urlPatterns = "/list")public class EmployeeServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Listlist = new ArrayList<>(); list.add(new Employee(7731, "张三", "市场部", "客户代表", 8000f)); req.setAttribute("employees", list); req.getRequestDispatcher("/employee.ftl").forward(req, resp); }}
访问Servlet后,请求会转发至employee.ftl
模板,显示员工信息。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月09日 00时09分16秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
web项目配置
2019-03-05
基于单片机简易信号误差分析设计-全套资料
2019-03-05
基于单片机简易脉搏测量仪系统设计-毕设课设资料
2019-03-05
Javascript中String支持使用正则表达式的四种方法
2019-03-05
Servlet2.5的增删改查功能分析与实现------删除功能(四)
2019-03-05
spring启动错误:Could not resolve placeholder
2019-03-05
invalid byte sequence for encoding
2019-03-05
技术美术面试问题整理
2019-03-05
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2019-03-05
js求阶乘
2019-03-05
Nginx---惊群
2019-03-05
项目中常用的审计类型概述
2019-03-05
(九)实现页面底部购物车的样式
2019-03-05
python-day3 for语句完整使用
2019-03-05
基于LabVIEW的入门指南
2019-03-05
weblogic之cve-2015-4852
2019-03-05
Java注释
2019-03-05
C++ 函数重载
2019-03-05