日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

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

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

若項(xiàng)目為Maven項(xiàng)目,那么可以如下

在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 {// 通過(guò)Freemaker的Configuration讀取相應(yīng)的ftlConfiguration cfg = new Configuration();// 設(shè)定去哪里讀取相應(yīng)的ftl模板文件cfg.setClassForTemplateLoading(this.getClass(), "/ftl");// 在模板文件目錄中找到名稱為name的文件Template temp = cfg.getTemplate(name);return temp;} catch (IOException e) {e.printStackTrace();}return null;}/*** 控制臺(tái)輸出* @Description * @author xebest-pc* @param name* @param root*/public void print(String name, Map<String, Object> root){try {// 通過(guò)Template可以將模板文件輸出到相應(yīng)的流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 {// 通過(guò)一個(gè)文件輸出流,就可以寫(xiě)到相應(yīng)的文件中,此處用的是絕對(duì)路徑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");}}

建立對(duì)應(yīng)的實(shí)體類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目錄下建個(gè)ftl包,用于存放ftl模板文件,this.getClass() 就是根據(jù)當(dāng)前類的路徑獲取模板文件位置

01.ftl

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>測(cè)試</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}還是一個(gè)小孩 <#elseif user.age lt 18>${user.name}快成年 <#else>${user.name}已經(jīng)成年 </#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僅僅只會(huì)判斷group.name是不是空值 --> ${(user.group.name)!"1234"} ${(a.b)!"沒(méi)有a.b元素"}<#-- !:指定缺失變量的默認(rèn)值 ??:判斷某個(gè)變量是否存在,返回boolean值 --> <#if (a.b)??> <#--if后不用加$-->不為空 <#else>為空 </#if> </body> </html>

然后最后附上測(cè)試類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);} }

?這樣就可以測(cè)試了

轉(zhuǎn)載于:https://www.cnblogs.com/yaomajor/p/5694624.html

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。