SpringBoot2 使用Freemarker模板引擎渲染web視圖

1. Freemarker模板引擎渲染web視圖

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

第一步:在pom.xml中配置引入  freeMarker的依賴包 。

    <!-- freeMarker的依賴包 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>

第二步:編寫控制器。

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.Map;

@EnableAutoConfiguration
@Controller
public class TestFreemarkerController {
    @RequestMapping("/testFreemarker")
    public String index(Map<String, Object> map) {
        map.put("name","大白");
        return "index";
    }
}

第三步:編寫視圖,視圖 index.ftl 的位置如下所示。

視圖的內容:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8" />
    <title></title>
</head>
<body>
  <h1>${name}</h1>
</body>
</html>

第四步:啓動項目,訪問http://localhost:8080/testFreemarker,如下圖所示:

2. Freemarker的優缺點

FreeMarker的原理就是:模板+數據模型=輸出。

Freemarker的優點:

  • 很好的將業務邏輯和表現層分離。
  • 提高開發效率。相對於JSP,FreeMarker不需要每次修改後重新編譯,因此在開發調試中可以有效節省時間。
  • 有利於提高訪問速度。對於不會頻繁發生變化的頁面,建議使用FreeMarker生成的靜態頁面。而不是每次都要動態生成的JSP頁面。
  • 可以提高併發量。例如單臺tomcat容器只支持幾百併發,我們如果將網頁以純靜態化的形式展現,就可以使用Nginx這樣的高性能的web服務器來部署。Nginx可以支持幾萬的併發。
  • 靜態頁面對SEO更友好。
  • 不佔用JVM的PermGen space。因爲不會被編譯成類,所以不會佔用web服務器永生代的空間,避免OutOfMemoryError:PermGen space的問題。
  • 對於電商網站的商品詳細頁來說,至少幾百萬個商品,每個商品又有大量的信息,這樣的情況同樣也適用於使用網頁靜態化來解決。

Freemarker的缺點:

  • 數據在更新後需要及時更新模板,否則可能會看到過期數據。
  • FreeMarker中的變量必須要賦值,不賦值就會拋出異常。想避免錯誤就要應用if/elseif/else 指令進行判段,如果對每一個變量都判斷的話,那麼則反而增加了編程的麻煩。
  • FreeMarker的map限定key必須是string,其他數據類型無法操作。
  • FreeMarker不支持集羣應用。爲了編成的方便性,把序列化的東西都放到了Session中,如Session,request等,在開發的過程中確實方便,但如果將應用放到集羣中,就會出現錯誤。

網頁靜態化技術和緩存技術區別:網頁靜態化技術和緩存技術的共同點都是爲了減輕數據庫的訪問壓力。但是具體的應用場景不同,緩存比較適合小規模的數據,而網頁靜態化比較適合大規模且相對變化不太頻繁的數據。

參考文獻:

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