FreeMarker如何生成靜態頁面

1、 FreeMarker生成靜態頁原理
衆所周知,FreeMarker適合於做爲Web應用的表現層,那麼咱們就把把頁面中所須要的樣式放入FreeMarker文件中,而後將頁面所須要的數據動態綁定,並放入Map中,經過調用FreeMarker模板文件解析類process()方法完成靜態頁面的生成。瞭解了上面的原理,接下來四夕就一步步帶您實現FreeMarker生成靜態頁面。
2、 建立FreeMarker模板文件user.ftl。
User.ftl
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=utf-8">
    <title>user.ftl</title>
  </head>
  <body>
    ${user.userName}
    ${user.userPassword}
  </body>
</html>
3、 建立FreeMarker模板文件解析器類FreeMarkertUtil
FreeMarkertUtil.java
//省略包的導入
Public class FreeMarkerUtil{
//templatePath模板文件存放路徑
//templateName 模板文件名稱
//filename 生成的文件名稱
public static void analysisTemplate(String templatePath,String templateName,String fileName,Map<?,?>root){
try {
   Configuration config=new Configuration();
  //設置要解析的模板所在的目錄,並加載模板文件
  config.setDirectoryForTemplateLoading(new File(templatePath));
   //設置包裝器,並將對象包裝爲數據模型
   config.setObjectWrapper(new DefaultObjectWrapper());
   
 //獲取模板,並設置編碼方式,這個編碼必需要與頁面中的編碼格式一致
 //不然會出現亂碼
Template template=config.getTemplate(templateName,「UTF-8」);
   //合併數據模型與模板
   FileOutputStream fos = new FileOutputStream(fileName);
   Writer out = new OutputStreamWriter(fos,「UTF-8」);
      template.process(root, out);
      out.flush();
      out.close();
  } catch (IOException e) {
   e.printStackTrace();
  }catch (TemplateException e) {
   e.printStackTrace();
  }
 }
}
4、 建立FreeMarker模板文件動態綁定的數據對象類User.java
User.java
//..省略包的導入 
      public class User{
 private String userName;
private String userPassword;
…省略getter()與setter方法html

}
5、 建立FreeMarker生成靜態頁面測試類ClientTest.java
//..省略包的導入
public class ClientTest{
 public static void main(String[] args){
 User user=new User();
  user.setUserName("張三");
  user.setUserPassword("123");
  
  Map<String,Object> root=new HashMap<String, Object>();
  root.put("user", user);
String templatesPath="D:/DevPlateForm/Eclipse/workspaces/freeMakerTest/src/templates";
  String templateFile="/user.ftl";
  String htmlFile=templatesPath+"/user.html";
    FreeMarkertUtil.analysisTemplate(templatesPath,templateFile,htmlFile,root);
}
}
注意: templatesPath爲我機器上的FreeMarker模板文件存放路徑。若是您要是測試的話,能夠將此改成您建立的模板文件存放路徑。
 好了,全部的工做都已經完成了,咱們能夠運行ClientTest類來測試了。
 
 本例在您的工程中運行時,必須導入freemarker.jar文件,不然不能編譯。
 在個人工程中,您能夠找到對應的文件。java


經過上面一個簡單的示例,相信您必定對FreeMarker如何生成靜態頁面有了瞭解。app

相關文章
相關標籤/搜索