最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Freemark頁面靜態(tài)化

2021-05-06 14:00 作者:匯智知了堂  | 我要投稿

1、什么是頁面靜態(tài)華

將動態(tài)頁面轉(zhuǎn)化成靜態(tài)的html,降低與數(shù)據(jù)庫的交互次數(shù),提高頁面的訪問速度
就是服務(wù)器在請求來之前把已經(jīng)固定好的東西先編譯好了,等請求來了再動態(tài)的填數(shù)據(jù),不要等請求來了什么都沒做忙得半死
利用第三方提供的模板引擎,生成對應(yīng)的html
thymeleaf
freemark
Velocity

2、為什么要使用網(wǎng)頁靜態(tài)化技術(shù)

網(wǎng)頁靜態(tài)化技術(shù)和緩存技術(shù)的共同點都是為了減輕數(shù)據(jù)庫的訪問壓力 而網(wǎng)頁靜態(tài)化比較適合大規(guī)模且相對變化不太頻繁的數(shù)據(jù)。另外網(wǎng)頁靜態(tài)化還有利于SEO。 將網(wǎng)頁以純靜態(tài)化的形式展現(xiàn),就可以使用Nginx這樣的高性能的web服務(wù)器來部署 Nginx可以承載5萬的并發(fā),而Tomcat只有幾百

3、Freemarker

3.1、什么是 Freemarker

freemarker是apache的一個開源的模板引擎,它基于模板來生成文本輸出。
freemaker模板引擎可以通過模板和數(shù)據(jù)生成靜態(tài)化頁面.

3.2、優(yōu)點

1. 提前根據(jù)模板和數(shù)據(jù)生成靜態(tài)化頁面通過io流將頁面寫入到硬盤上, 訪問的時候直接訪問.就不用訪問數(shù)據(jù)庫了, 可以大大提高數(shù)據(jù)庫的高并發(fā)讀取性能. 是數(shù)據(jù)庫訪問量降低.
  1. 由于頁面是提前生成好的, 所以訪問速度快, 客戶體驗好

  2. 由于html不需要tomcat解析瀏覽器可以直接訪問, 所以給tomcat降低高并發(fā)訪問壓力.


3.3、使用場景

新聞網(wǎng)站新聞頁面通過freemarker提前生成好 電商網(wǎng)站商品詳情頁面通過freemarker提前生成好 原則:頁面有固定的樣式, 并且一次生成多次讀取, 盡量少的改動數(shù)據(jù)

3.4、運行過程

3.5、模板

模板在freemarker中是以.ftl為后綴名的文件, 在模板中可以使用html標(biāo)簽, css, js,圖片等靜態(tài)資源
模板中可以使用el表達式獲取數(shù)據(jù), 但是無法使用jstl標(biāo)簽來判斷和循環(huán), 所以模板引擎會有自己的一套標(biāo)簽庫供我們使用.

3.6、數(shù)據(jù)

數(shù)據(jù)一般存儲在關(guān)系型數(shù)據(jù)庫或者redis或者mongodb中獲取.

3.7、模板文件中四種元素

  1. 文本,直接輸出的部分

  2. 注釋,即<#—…—>格式不會輸出

  3. 插值(Interpolation):即${..}部分,將使用數(shù)據(jù)模型中的部分替代輸出

  4. FTL指令:FreeMarker指令,和HTML標(biāo)記類似,名字前加#予以區(qū)分,不會輸出

4、入門程序

4.1、創(chuàng)建Maven工程

4.2、引入pom依賴

<dependency> ? ? ? ?

<groupId>org.freemarker</groupId> ? ? ? <artifactId>freemarker</artifactId> ? ? ? ?

<version>2.3.23</version>?

</dependency>


創(chuàng)建模板文件

<html>?

<head> ? ?

<meta charset="utf-8"> ? ?

<title>Freemarker入門小DEMO </title>?

</head>?

<body>?

<#--注釋內(nèi)容 ?-->?

${name},你好。${message}?

</body>?

</html>


生成文件

創(chuàng)建一個測試類

public class TestFreemarker { ? ?

/*

第一步:創(chuàng)建一個 Configuration 對象,直接 new 一個對象。構(gòu)造方法的參數(shù)就是 freemarker的版本號。 ? ?

第二步:設(shè)置模板文件所在的路徑。 ? ?

第三步:設(shè)置模板文件使用的字符集。一般就是 utf-8. ? ?

第四步:加載一個模板,創(chuàng)建一個模板對象。 ? ?

第五步:創(chuàng)建一個模板使用的數(shù)據(jù)集,可以是 pojo 也可以是 map。一般是 Map。 ? ?

第六步:創(chuàng)建一個 Writer 對象,一般創(chuàng)建一 FileWriter 對象,指定生成的文件名。 ??

第七步:調(diào)用模板對象的 process 方法輸出文件。 ? ?

第八步:關(guān)閉流

*/ ? ?public static void main(String[] args) throws Exception { ? ? ? ?//1.創(chuàng)建配置類 ? ? ? ?

Configuration configuration=new Configuration(Configuration.getVersion()); ? ? ? ?

//2.設(shè)置模板所在的目錄(絕對路徑) ? ? ? ?configuration.setDirectoryForTemplateLoading(new File("D:\\java\\撩課-高新強\\分布式項目(代碼)\\code2\\FreeMarkerPro\\src\\main\\resources\\ftl")); ? ? ? ?

//3.設(shè)置字符集 ? ? ? ?configuration.setDefaultEncoding("utf-8"); ? ? ??

//4.加載模板 ? ? ? ?Template template = configuration.getTemplate("MyFreemark.ftl"); ? ? ? ?

//5.創(chuàng)建數(shù)據(jù)模型 ? ? ? ?

Map map=new HashMap(); ? ? ? ?

map.put("name", "joker"); ? ? ? ?

map.put("message", "welcome Freemarker"); ? ? ? ?

//6.創(chuàng)建Writer對象 ? ? ? ?

Writer out =new FileWriter(new File("d:\\test.html")); ? ? ? ?

//7.輸出 ? ? ? ?

template.process(map, out); ? ? ? ?

//8.關(guān)閉Writer對象 ? ? ? ?

out.close(); ? ?

}

}

4.3、點擊測試

生成文件在D:test.html

5、FTL指令

5.1、assign指令

此指令用于在頁面上定義一個變量

<#assign myname="Myxq--">?

${myname}

定義對象類型

<#assign info={"name":"myxqName",'age':'30'} >?

電話:${info.name} ?地址:${info.age}

5.2、list指令

遍歷數(shù)組

?List goodsList=new ArrayList(); ? ? ? ?

goodsList.add("goods1"); ? ? ??

?goodsList.add("goods2"); ? ? ? ?

goodsList.add("goods3"); ? ? ? ?

Map map=new HashMap(); ? ? ? ?

map.put("goodsList",goodsList); ? ? ? ?

//6.創(chuàng)建Writer對象 ? ? ? ?

Writer out =new FileWriter(new File("d:\\test.html")); ? ? ? ?

//7.輸出 ? ? ? ?

template.process(map, out);

<#list users as user> ? ?

${user_index} --- ${user.name}--${user.age}?

</#list>

5.3、if指令


<#assign myname="myxq">?

<#if myname="myxq"> ? ?

<h1>大標(biāo)題1myxq</h1>?

<#else> ? ?

<h1>大標(biāo)題2</h1>?

</#if>

5.4、include指令

用于模板文件的嵌套

<#include "header.ftl">


總結(jié)

與緩存技術(shù)的一樣都是為了減輕數(shù)據(jù)庫的訪問壓力 而網(wǎng)頁靜態(tài)化比較適合大規(guī)模且相對變化不太頻繁的數(shù)據(jù)。另外網(wǎng)頁靜態(tài)化還有利于SEO。 將網(wǎng)頁以純靜態(tài)化的形式展現(xiàn),就可以使用Nginx這樣的高性能的web服務(wù)器來部署 Nginx可以承載5萬的并發(fā),而Tomcat只有幾百,這也是Freemark的優(yōu)勢。


Freemark頁面靜態(tài)化的評論 (共 條)

分享到微博請遵守國家法律
南部县| 将乐县| 肇源县| 吉林市| 儋州市| 容城县| 罗江县| 辛集市| 永胜县| 莱西市| 梅河口市| 忻州市| 仪陇县| 敦煌市| 金阳县| 灌南县| 越西县| 辉县市| 彭州市| 湟源县| 南澳县| 安龙县| 家居| 桃源县| 郴州市| 宜宾市| 西藏| 延吉市| 福安市| 汕尾市| 孟州市| 庆元县| 章丘市| 武功县| 平凉市| 临泽县| 营山县| 呼玛县| 石泉县| 思南县| 乌审旗|