<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
頁面靜態化其實就是將原來的動態網頁(例如通過ajax請求動態獲取資料庫中的資料並展示的網頁)改為通過靜態化技術生成的靜態網頁,這樣使用者在存取網頁時,伺服器直接給使用者響應靜態html頁面,沒有了動態查詢資料庫的過程。
常用實現方法:Freemarker、thymeleaf等。
FreeMarker 是一個用 Java 語言編寫的模板引擎,它基於模板來生成文字輸出。FreeMarker與 Web 容器無關,即在 Web 執行時,它並不知道 Servlet 或 HTTP。它不僅可以用作表現層的實現技術,而且還可以用於生成 XML,JSP 或 Java 等。
定義一個Template模板,獲取FreeMarker裡面的內容詳細通過java傳入內容詳細給FreeMarker輸出Template模板結合內容的完成頁面 2、Freemarker入門案例 1、建立一個maven工程並匯入Freemarker的maven座標
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency>
模板檔案中有四種元素:
Freemarker的模板檔案字尾可以任意,一般建議為ftl。
在D槽建立ftl目錄,在ftl目錄中建立名稱為test.ftl的模板檔案,內容如下:
<html> <head> <meta charset="utf-8"> <title>Freemarker入門</title> </head> <body> <#--我只是一個註釋,我不會有任何輸出 --> ${name}你好,${message} </body> </html>
建立模板檔案範例
將檔案儲存到一個新的目錄下:
使用步驟:
public static void main(String[] args) throws Exception { // 1、建立freemarker的設定物件 Configuration configuration = new Configuration(Configuration.getVersion()); // 2、設定模板檔案所在目錄 configuration.setDirectoryForTemplateLoading(new File("F:\ftl")); // 3、設定字元集 configuration.setDefaultEncoding("utf-8"); // 4、載入模板檔案 Template template = configuration.getTemplate("test.ftl"); // 5、準備模板檔案中所需要的資料,通常是通過map進行構造 Map map = new HashMap(); map.put("name","Hello"); map.put("message","freemarker"); // 6、準備輸出流物件,用於輸出靜態檔案 FileWriter fileWriter = new FileWriter("F:\ftl\test.html"); // 7、使用模板輸出靜態檔案 template.process(map,fileWriter); // 8、關閉輸出流 fileWriter.close(); }
上面的入門案例中Configuration設定物件是自己建立的,字元集和模板檔案所在目錄也是在Java程式碼中指定的。在專案中應用時可以將Configuration物件的建立交由Spring框架來完成,並通過依賴注入方式將字元集和模板所在目錄注入進去。
當程式執行完成之後,檢視檔案的位置就會多出與一個html的靜態檔案,後面的專案也可以通過這樣的方式來提高存取速度
用於在頁面上定義一個便變數,可以是簡單型別也可以是物件型別
定義一個簡單型別的變數:
<#assign linkman="周先生"> 聯絡人:${linkman}
定義一個物件型別的變數:
<#assign info={"mobile":"13812345678",'address':'北京市昌平區'} > 電話:${info.mobile} 地址:${info.address}
用於模板檔案的巢狀
建立一個公共模板:
修改test.ftl
模板在裡面巢狀heade.ftl
公共模板
<#include "head.ftl"/>
if指令用於判斷
在模板檔案中使用if指令進行判斷:
<#if success=true> 你已通過實名認證 <#else> 你未通過實名認證 </#if>
判斷的變數可以在java程式碼中編寫也可以在模板中通過
<#assign linkman="success">
指令來判斷,如果同時設定的話,模板中的指令優先順序大於java的
在java程式碼中為success變數賦值:
map.put("success", true);
在freemarker的判斷中,可以使用= 也可以使用==
list指令用於遍歷
在模板檔案中使用list指令進行遍歷
as是一個關鍵字不可以進行修改,後面是就取出來的資料作為一個變數進行獲取
<#list goodsList as goods> 商品名稱: ${goods.name} 價格:${goods.price} </#list>
在java程式碼中為goodsList賦值:
List goodsList=new ArrayList(); Map goods1=new HashMap(); goods1.put("name", "蘋果"); goods1.put("price", 5.8); Map goods2=new HashMap(); goods2.put("name", "香蕉"); goods2.put("price", 2.5); Map goods3=new HashMap(); goods3.put("name", "橘子"); goods3.put("price", 3.2); goodsList.add(goods1); goodsList.add(goods2); goodsList.add(goods3); map.put("goodsList", goodsList);
下面我們就可以將Freemarker應用到專案中,幫我們生成行動端套餐列表靜態頁面和套餐詳情靜態頁面。接下來我們需要思考幾個問題:
什麼時候生成靜態頁面比較合適呢?
應該是當套餐資料發生改變時,需要生成靜態頁面,即我們通過後臺系統修改套餐資料(包括新增、刪除、編輯)時。
將靜態頁面生成到什麼位置呢?
如果是在開發階段可以將檔案生成到專案工程中,如果上線後可以將檔案生成到行動端系統執行的tomcat中。
應該生成幾個靜態頁面呢?
套餐列表只需要一個頁面就可以了,在這個頁面中展示所有的套餐列表資料即可。套餐詳情頁面需要有多個,即一個套餐應該對應一個靜態頁面。
在health_service_provider工程中建立屬性檔案freemarker.properties
指定將靜態HTML頁面生成的目錄位置,方便後期修改維護
out_put_path=D:/ideaProjects
在專案工程中的通過spring建立FreeMarkerConfigurer物件
當專案啟動的時候就會去建立
<!--建立模板的物件--> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <!--指定模板檔案所在目錄--> <property name="templateLoaderPath" value="/WEB-INF/ftl/" /> <!--指定字元集--> <property name="defaultEncoding" value="UTF-8" /> </bean> <!--引入輸出靜態模板的位置,輸出檔案的時候會使用到裡面的key和value--> <context:property-placeholder location="classpath:freemarker.properties"/>
根據快速入門的程式碼來編寫1即可
到此這篇關於Java使用Freemarker頁面靜態化生成的實現的文章就介紹到這了,更多相關Java Freemarker 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45