在访问 新闻、活动、商品 详情页面时, 路径可以是 xx【id】.html, 服务器端根据请求 id, 动态生成 html 网页,下次访问数据时,无需再查询数据,直接将 html 静态页面返回。这样一来就减 少 数 据 库 交 互 , 从而提高查询性能。 
Struts2 默认使用 freemarker 实现 自定义标签模板,项目导入 struts2 就已经导入了freemarker jar 包。 
使用Freemarker步骤: 
1、 安装 freemarker eclipse 编辑插件。 
将 “freemarker_eclipseplugin” 复制 eclipse 的 dropins 文件夹 ,重启开发工具。 
2、 编辑 freemarker 的模板文件。 
通常模板文件 放在 WEB-INF 下 或者 classes 下。 
${变量} , 需要在程序中指定变量,合并到模板文件 一同输出。


hello.ftl模板文件代码:

 <html>
<title>
${title}
</title>
<body>
${msg}
</body>
</html>

Java测试类FreemarkerTest代码:

 public class FreemarkerTest {
@Test
public void testOutput() throws IOException, TemplateException {
// 配置对象, 配置模板位置
Configuration configuration = new Configuration(
Configuration.VERSION_2_3_22);
configuration.setDirectoryForTemplateLoading(new File(
"src/main/webapp/WEB-INF/templates")); // 获取模板对象
Template template = configuration.getTemplate("hello.ftl"); // 动态数据对象
Map<String, Object> paramterMap = new HashMap<String, Object>();
paramterMap.put("title", "你我他学习吧");
paramterMap.put("msg", "你好,这是第一个Freemarker案例!"); // 合并输出
template.process(paramterMap, new PrintWriter(System.out));
}
}

最新文章

  1. UI控件封装一般步骤
  2. HTTP中的POST、GET区别
  3. Oracle 时间差计算
  4. centos6.5Xen4.2安装
  5. mysqlbinglog基于即时点还原
  6. Android 开发之动画详解
  7. 【POJ2482】【线段树】Stars in Your Window
  8. Lotto--poj2245
  9. 【从翻译mos文章】SGA_TARGET与SHMMAX关系
  10. Mysql数据库读写分离Amoeba
  11. WAMPServer多站点配置方法
  12. maven项目打包发布时跳过测试
  13. Maven项目不打包*.hbm.xml文件
  14. hdu 6034 B - Balala Power! 贪心
  15. socket.io的websocket示例
  16. 我了解到的新知识之—Apple Captive Portal 网页认证登陆公共Wifi
  17. JavaScript中的Date对象在IOS中的“大坑”
  18. c++动态库封装及调用(3、windows下动态库调用)
  19. mock生成随机数的各种情况
  20. tp3.x和tp 5的区别

热门文章

  1. E. Magic Stones CF 思维题
  2. 【NOI2018模拟】Yja
  3. C#事件の事件聚合器(二)
  4. 移动HTML5前端性能优化指南
  5. ActiveMQ的queue以及topic两种消息处理机制分析
  6. 极端恢复时用到的几个隐藏参数 Oracle hidden corruption recovery parameters
  7. Python脱产8期 Day08 2019/4/22
  8. 对Android系统权限的认识
  9. 写了个限制文本框输入最大长度的jquery插件 - jquery.restrictFieldLength.js
  10. HBase篇(1)-特性与应用场景