初識Freemarker

//

初識Freemarker

//

FreeMarker介紹:

    FreeMarker是一款模板引擎: 即一種基於模板和要改變的數據,並用來生成輸出文本(HTML網頁、電子郵件、配置文件、源代碼等)的通用工具。它不是面向最終用戶的,而是一個Java類庫,是一款程序員可以嵌入他們所開發產品的組件。

    FreeMarker是免費的,基於Apache許可證2.0版本發佈。其模板編寫爲FreeMarker Template Language(FTL),屬於簡單、專用的語言。需要準備數據在真實編程語言中來顯示,比如數據庫查詢和業務運算,之後模板顯示已經準備好的數據。在模板中,主要用於如何展現數據, 而在模板之外主要用於展示什麼數據。

FreeMarker最初的設計,是被用來在MVC模式的Web開發框架中生成HTML頁面的,它沒有被綁定到 Servlet或HTML或任意Web相關的東西上。它也可以用於非Web應用環境中。(上面是團長百度的哈~)

    說白了,它就是一個可以根據數據和創建好的模板,去自動生成html靜態頁面。爲什麼會有這技術的產生呢?我們知道在一些大型的電商項目或者新聞類網站,點擊一次詳情頁面,我們都會向服務器發送請求,再由服務器向數據庫取出我們想要的詳情數據,最終將數據返回到客戶端這麼一個過程!但是如果現在有很多的用戶同時點擊詳情頁面,這時候會發生一件什麼事呢?相信菜鳥們都知道,服務器會有很大的壓力,同時數據庫的的訪問壓力也會增加,這時候的用戶體驗就會變得非常不好!所以,爲了減少數據庫的壓力,同時也爲了用戶的體驗度,聰明的人想到了,如果直接把商品詳情頁面準備好,那麼就不需要再去數據庫查找了,節約了大量的資源,同時也提高了用戶體驗度。

    freemarker就是起到了這麼一個作用,每增加一個商品就自動生成一個靜態頁面,保存到web層中.

優點

一、減少數據庫的壓力

二、不需要Servlet環境就可以很輕鬆的嵌入到應用程序中

三、網頁的靜態化,有利於SEO(搜索引擎優化)

四、能生成各種文本,如html,xml,java,等

 

FreeMarker實現原理

如圖:

FreeMarker所做的事,就是將模板與數據結合,然後輸出。

原理就是:讀取模板,將模板的“插值”用數據中的“變量”來替換,然後通過文件IO的形式輸出。

Demo

新建一個maven工程,引入freemarker依賴jar包即可。

依賴jar :

<!--freemarker依賴jar包,我的是2.3.23版本-->
<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>2.3.23</version>
</dependency>

項目目錄:

在模板文件demo.ftl中

文本:直接輸出的部分

註釋:即<#-- 我是個註釋  -->,<!-- html註釋  -->

插值:即${...}部分

模板demo.ftl文件

<html>
<header>
    <title>demo</title>
    <meta charset="UTF-8"/>
</header>
<body>
<#--我是個註釋-->
<!--這是html註釋-->

<#--利用這個新建的基礎模板來演示-->
${name},你好!${message}!

</body>
</html>

模板實體類FreeMarkerDemo:

導入的包:

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

新建一個main方法:

public static void main(String[] agrs) throws IOException, TemplateException {



   //1.創建一個配置對象

   Configuration config = new Configuration(Configuration.getVersion());

   //2.設置模板所在目錄

   config.setDirectoryForTemplateLoading(new File("D:\\idea\\idea_workspace_springmvc01\\freemarker-demo\\src\\main\\resources"));

   //3.設置字符集

   config.setDefaultEncoding("utf-8");

   //4.獲取模板對象

   Template template = config.getTemplate("demo.ftl");

   //5.創建數據模型(可以是對象,可以是map)

   Map map = new HashMap();

   map.put("name", "團長");

   map.put("message", "真帥!");

   //6.創建一個輸出流對象

   Writer out = new FileWriter("D:\\demo.html");

   //7.輸出(拋出異常)

   template.process(map, out);

   //8.關閉

   out.close();

}

運行main方法

運行成功後查看D盤目錄下是否生成了demo.html文件

瀏覽器打開demo.html:

OK,到這裏就全部完成了freemarker-demo這個項目,利用freemarker生成靜態資源,實現了網頁的靜態化,是不是很簡單~

好了,團長今天的分享到這裏,如果有什麼疑問記得在公衆號消息頁面留言哦!

如果文章中有什麼說的不到位的地方,也歡迎你指出!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章