分享

使用FreeMarker生成静态页原理和实例

 hmtomyang 2015-09-22

上次我们探讨了FreeMarker的模板组成,今天我们就来探讨一下FreeMarker生成静态页原理。简单说就是“模板”+“数据”=“静态页面输出”,也就是将页面中所需要的样式放入FreeMarker模板文件中,然后将页面所需要的数据动态绑定,并放入Map中,通过调用FreeMarker模板文件解析类process()方法完成静态页面的生成。如图所示:

“模板”+“数据”=“静态页面输出”

了解过FreeMarker生成静态页的原理之后,我们就来通过一个实例更直观的去剖析一下。

一、 创建一个简单的FreeMarker模板文件user.ftl

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <meta http-equiv=Content-Type content="text/html; charset=utf-8">
  5. <title>user.ftl</title>
  6. </head>
  7. <body>
  8. ${user.userName}
  9. ${user.userPassword}
  10. </body>
  11. </html>

二、 创建FreeMarker模板文件动态绑定的数据的对象类User.java

  1. public class User{
  2. private String userName;
  3. private String userPassword;
  4.  
  5. public String getUserName(){
  6. return userName;
  7. }
  8. public void setUserName(String userName){
  9. this.userName=userName;
  10. }
  11.  
  12. public String getUserPassword(){
  13. return userPassword;
  14. }
  15. public void setUserName(String userPassword){
  16. this.userPassword=userPassword;
  17. }
  18. }

三、 创建FreeMarker模板文件解析器工具类FreeMarkertUtil.java

  1. //省略包的导入
  2. Public class FreeMarkerUtil{
  3. //templatePath模板文件存放路径
  4. //templateName 模板文件名称
  5. //filename 生成的文件名称
  6. public static void analysisTemplate(String templatePath,String templateName,
  7. String fileName,Map<?,?>root){
  8. try {
  9. Configuration config=new Configuration();
  10. //设置要解析的模板所在的目录,并加载模板文件
  11. config.setDirectoryForTemplateLoading(new File(templatePath));
  12. //设置包装器,并将对象包装为数据模型
  13. config.setObjectWrapper(new DefaultObjectWrapper());
  14. //获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致
  15. //否则会出现乱码
  16. Template template=config.getTemplate(templateName,“UTF-8”);
  17. //合并数据模型与模板
  18. FileOutputStream fos = new FileOutputStream(fileName);
  19. Writer out = new OutputStreamWriter(fos,“UTF-8”);
  20. template.process(root, out);
  21. out.flush();
  22. out.close();
  23. } catch (IOException e) {
  24. e.printStackTrace();
  25. }catch (TemplateException e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. }


四、 创建FreeMarker生成静态页面测试类ClientTest.java

  1. //省略包的导入
  2. public class ClientTest{
  3. public static void main(String[] args){
  4. //生成数据Map,实际使用中这里可以是数据库查询出的数据
  5. User user=new User();
  6. user.setUserName("Csyor");
  7. user.setUserPassword("123456");
  8. Map<String,Object> root=new HashMap<String, Object>();
  9. root.put("user", user);
  10. //下面是你定义模板的路径
  11. String templatesPath="D:/MyEclipse/workspaces/freeMaker/templates";
  12. //下面是模板的名称
  13. String templateFile="/user.ftl";
  14. //下面是静态页面输出路径
  15. String htmlFile=templatesPath+"/user.html";
  16. //根据模板生成静态页面
  17. FreeMarkertUtil.analysisTemplate(templatesPath,templateFile,htmlFile,root);
  18. }
  19. }

至此,一个简单的FreeMarker生成静态页面的实例已经完成,在你指定的静态页面路径(htmlFile)中已经有一个和你定义的模板(user.ftl)格式一样的静态文件。当然实际使用过程中不要忘记导入freemarker.jar,而且FreeMarker不只是能够生产前台view页面,也可以根据实际情况生产.java、.jsp、.xml等文件。

本文固定链接: http://www./185.html - 穿梭于偶然

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多