FreeMarker生成静态页

本文介绍使用FreeMarker生成静态页面的方法,包括创建模板文件、数据绑定对象及解析器类等步骤,最后通过测试类验证生成效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 转自:http://cto.youkuaiyun.com/Article.aspx?Name=renyibing&pointid=4863

一、 FreeMarker生成静态页原理
众所周知,FreeMarker适合于作为Web应用的表现层,那么我们就把把页面中所需要的样式放入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模板文件解析器类FreeMarkertUtil
FreeMarkertUtil.java

  1. //省略包的导入  
  2. Public class FreeMarkerUtil{  
  3. //templatePath模板文件存放路径  
  4. //templateName 模板文件名称  
  5. //filename 生成的文件名称  
  6. public static void analysisTemplate(String templatePath,String templateName,String fileName,Map<?,?>root){  
  7. try {  
  8.    Configuration config=new Configuration();  
  9.   //设置要解析的模板所在的目录,并加载模板文件  
  10.   config.setDirectoryForTemplateLoading(new File(templatePath));  
  11.    //设置包装器,并将对象包装为数据模型  
  12.    config.setObjectWrapper(new DefaultObjectWrapper());  
  13.      
  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模板文件动态绑定的数据对象类User.java
User.java

  1. //..省略包的导入   
  2.       public class User{  
  3.  private String userName;  
  4. private String userPassword;  
  5. …省略getter()与setter方法  
  6.   
  7. }  


 

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

  1. //..省略包的导入  
  2. public class ClientTest{  
  3.  public static void main(String[] args){  
  4.  User user=new User();  
  5.   user.setUserName("张三");  
  6.   user.setUserPassword("123");  
  7.     
  8.   Map<String,Object> root=new HashMap<String, Object>();  
  9.   root.put("user", user);  
  10. String templatesPath="D:/DevPlateForm/Eclipse/workspaces/freeMakerTest/src/templates";  
  11.   String templateFile="/user.ftl";  
  12.   String htmlFile=templatesPath+"/user.html";  
  13.     FreeMarkertUtil.analysisTemplate(templatesPath,templateFile,htmlFile,root);  
  14. }  
  15. }  


 

注意: templatesPath为我机器上的FreeMarker模板文件存放路径。如果您要是测试的话,可以将此改为您创建的模板文件存放路径。
 好了,所有的工作都已经完成了,我们可以运行ClientTest类来测试了。
 
 本例在您的工程中运行时,必须导入freemarker.jar文件,否则不能编译。
 在我的工程中,您可以找到对应的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值