網頁靜態化之freemaker的使用

林海靜發表於2018-09-26

一、基礎知識點

1、同型別的產品還有Apache旗下Java開發的velocity;

2、Java語言編寫的模板引擎,基於模板生成文字檔案,比如生成Java、xml、jsp;

3、模板自己定義,資料也自己定義,但可以根據freemaker提供的方法使用自己定義的模板和資料生成想要的靜態頁面;

4、與web容器無關;

5、有資料和模板即可生成新的檔案;

6、用於網頁靜態化,提高訪問效率,適用於分散式系統;

二、使用步驟

1、專案pom檔案中引入freemaker的jar包

2、編寫如下測試程式碼

    @Test
    public void testFreemaker()throws Exception{
        //建立一個freemaker的模板
        //建立一個configuration物件,並設定當前freemaker的版本號
        Configuration configuration = new Configuration(Configuration.getVersion());
        //設定模板路徑
        configuration.setDirectoryForTemplateLoading(new File("D:\\dev_taotao\\taotao-item-web\\src\\main\\webapp\\WEB-INF\\ftl"));
        //設定模板的編碼格式為utf-8
        configuration.setDefaultEncoding("utf-8");
        //獲取模板物件
//        Template template = configuration.getTemplate("hello.ftl");
        Template template = configuration.getTemplate("student.ftl");

        //設定資料
        Map data = new HashMap();
        data.put("hello","hello freemaker");
        Student student = new Student(1,"靜靜",26,"北京豐臺區");
        data.put("student",student);
        List list = new ArrayList();
        list.add( new Student(1,"靜靜1",26,"北京豐臺區"));
        list.add( new Student(2,"靜靜1",26,"北京豐臺區"));
        list.add( new Student(3,"靜靜2",26,"北京豐臺區"));
        list.add( new Student(4,"靜靜3",26,"北京豐臺區"));
        list.add( new Student(5,"靜靜4",26,"北京豐臺區"));
        data.put("studentList",list);

        //新建輸出流
        Writer writer = new FileWriter("D:\\dev_taotao\\taotao-item-web\\src\\main\\webapp\\WEB-INF\\out\\student.html");
        //寫入模板
        template.process(data,writer);
        //關閉流
        writer.close();

    }

3、在對應ftl目錄下新建模板檔案student.ftl,內容如下,按照html語法和freemaker語法寫即可:

本測試主要實現元素檢視,物件內容輸出和內容迴圈展現

<html>
<head>
    <title>測試頁面</title>
</head>
<body>
學生資訊:<br>
學號:${student.id}<br>
姓名:${student.name}<br>
年齡:${student.age}<br>
家庭住址:${student.address}<br>
學生列表:<br>
<table border="1">
    <tr>
        <th>序號</th>
        <th>學號</th>
        <th>姓名</th>
        <th>年齡</th>
        <th>家庭住址</th>
    </tr>
    <#list studentList as stu>
    <#if stu_index%2==0>
    <tr bgcolor="aqua">
    <#else>
    <tr bgcolor="#ff7f50">
    </#if>
        <td>${stu_index}</td>
        <td>${stu.id}</td>
        <td>${stu.name}</td>
        <td>${stu.age}</td>
        <td>${stu.address}</td>
    </tr>
    </#list>
</table>

</body>
</html>

4、執行測試程式碼

在瀏覽器輸入檔案輸出路徑,結果如下:

相關文章