日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Freemarker入门小案例(生成静态网页的其中一种方式)

發(fā)布時間:2025/7/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Freemarker入门小案例(生成静态网页的其中一种方式) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?其實生成靜態(tài)網頁的方式有好多種,我昨天看了一下,Freemarker是其中一種,但是Freemarker現(xiàn)在我們都用得比較少了,現(xiàn)在用得ActiveMQ用來發(fā)送信息到靜態(tài)頁面,不過想了一下這個小東西,還是想給大家分享一下,我的小小心得。

若項目為Maven項目,那么可以如下

在Pom.xml文件里面添加

<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.16</version></dependency>

?

CreateFreemarkerStatic.java

package com.llmj.DemoTest.Test;import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map;import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException;public class CreateFreeMarkStatic {/*** * @Description * @author xebest-pc* @param name* @return*/public Template getTemplate(String name) {try {// 通過Freemaker的Configuration讀取相應的ftlConfiguration cfg = new Configuration();// 設定去哪里讀取相應的ftl模板文件cfg.setClassForTemplateLoading(this.getClass(), "/ftl");// 在模板文件目錄中找到名稱為name的文件Template temp = cfg.getTemplate(name);return temp;} catch (IOException e) {e.printStackTrace();}return null;}/*** 控制臺輸出* @Description * @author xebest-pc* @param name* @param root*/public void print(String name, Map<String, Object> root){try {// 通過Template可以將模板文件輸出到相應的流Template temp = this.getTemplate(name);temp.process(root, new PrintWriter(System.out));} catch (TemplateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** 輸出HTML文件* @Description * @author xebest-pc* @param name* @param root* @param outFile*/public void fprint(String name, Map<String, Object> root, String outFile) {FileWriter out = null;try {// 通過一個文件輸出流,就可以寫到相應的文件中,此處用的是絕對路徑out = new FileWriter(new File("E:/workspace/freemarkprj/page/" + outFile));Template temp = this.getTemplate(name);temp.process(root, out);} catch (IOException e) {e.printStackTrace();} catch (TemplateException e) {e.printStackTrace();} finally {try {if (out != null)out.close();} catch (IOException e) {e.printStackTrace();}}}public static void main(String[] args){Map<String,Object> root=new HashMap<String,Object>();root.put("username", "zhangsan");//在ftl中要賦值的變量CreateFreeMarkStatic util= new CreateFreeMarkStatic();util.fprint("01.ftl", root, "01.html");}}

建立對應的實體類User.java

package com.llmj.DemoTest.entity; import java.io.Serializable;@SuppressWarnings("serial") public class User implements Serializable {private int id;private String name;private int age;private Group group;public Group getGroup() {return group;}public void setGroup(Group group) {this.group = group;}public User() {}public User(int id, String name, int age) {this.id = id;this.name = name;this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

Group.java

package com.llmj.DemoTest.entity;public class Group {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}

2 、在src目錄下建個ftl包,用于存放ftl模板文件,this.getClass() 就是根據當前類的路徑獲取模板文件位置

01.ftl

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>測試</title> </head><body> <h1>你好${username}</h1> </body> </html>

02.ftl

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head><body> <h1>你好: ${username}</h1> </body> </html>

?

03.ftl

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>${user.id}-----${user.name}-----${user.age}</h1> <#if user.age lt 12>${user.name}還是一個小孩 <#elseif user.age lt 18>${user.name}快成年 <#else>${user.name}已經成年 </#if> </body> </html>

04.ftl

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <#list users as user> ${user.id}---------${user.name}-------${user.age}<br/> </#list> </body> </html>

05.ftl

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head><body> <hr/> <#list users as user> ${user.id}---------${user.name}-------${user.age}<br/> </#list> </body> </html>

06.ftl

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head><body> ${user.id}-------${user.name}------${user.group!} <#-- !后為空就不輸出 --> <#--${user.group.name!}--><#-- 按照以上的方式加! freemarker僅僅只會判斷group.name是不是空值 --> ${(user.group.name)!"1234"} ${(a.b)!"沒有a.b元素"}<#-- !:指定缺失變量的默認值 ??:判斷某個變量是否存在,返回boolean值 --> <#if (a.b)??> <#--if后不用加$-->不為空 <#else>為空 </#if> </body> </html>

然后最后附上測試類FreemarkTest.java

import java.util.HashMap; import java.util.List; import java.util.Map;import org.junit.Test;import com.llmj.DemoTest.entity.Group; import com.llmj.DemoTest.entity.User;public class FreemarkerTest {@Testpublic void test(){CreateFreeMarkStatic util = new CreateFreeMarkStatic();Map<String, Object> map = new HashMap<String, Object>();Group group = new Group();group.setName("IT");User user = new User();user.setId(001);user.setName("張三");user.setAge(12);user.setGroup(group);List<User> users = new ArrayList<User>();users.add(user);users.add(user);users.add(user);map.put("user", user);//普通EL賦值//util.fprint("01.ftl", map, "01.html" );//判斷//util.fprint("03.ftl", map, "03.html");//遍歷//util.print("05.ftl", map);//子元素判斷util.print("06.ftl", map);} }

?這樣就可以測試了

轉載于:https://www.cnblogs.com/yaomajor/p/5694624.html

總結

以上是生活随笔為你收集整理的Freemarker入门小案例(生成静态网页的其中一种方式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。