中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

FreeMarker的原理和應用

發布時間:2021-06-29 10:37:03 來源:億速云 閱讀:297 作者:chen 欄目:大數據

這篇文章主要介紹“FreeMarker的原理和應用”,在日常操作中,相信很多人在FreeMarker的原理和應用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”FreeMarker的原理和應用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

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

FreeMarker并不關心數據的來源,只是根據模版的內容,將數據模版在模版中顯示并輸出文件(通常是html,也可以生成其他格式的文本文件)

數據模型:數據模型在java中可以是基本類型也可以說List,Map,Pojo等復雜類型

快速入門:

一、添加依賴

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.8</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>

    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>4.1.0</version>
    </dependency>
</dependencies>

二、編寫啟動類

@SpringBootApplication
public class FreemarkerApplication {
    public static void main(String[] args) {
        SpringApplication.run(FreemarkerApplication.class);
    }
}

三、編寫實體類

@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Student {

    private String name;
    private int age;
    private Date birthday;
    private Float money;
    private List<Student> friends;
    private Student bestFriends;
}

四、在resources下創建templates文件夾,創建模版文件 test1.ftl

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

五、編寫controller

@Controller
@RequestMapping("/freemarker")
public class FreemarkerController {
   @RequestMapping("/test1")
    public String freemarker(Map<String ,Object> map){
       map.put("name","cxy");
       return "test1";
   }


}

六、啟動測試

freemarker基礎知識:

1、注釋,即<#-- 內容 -->,介于其之間的內容會被freemarker忽略

2、插值,即${},會被freemarker用真實值替代

3、FTL,和html標記類似,名字前加#予以區別,freemarker會解析標簽中的表達式或邏輯

4、文本,僅文本信息,直接輸出內容

List指令:在模版中遍歷數據

<table>
    <#list stus as stu>
        <tr>
            <td>${stu.index}</td>
            <td>${stu.name}</td>
            <td>${stu.age}</td>
            <td>${stu.money}</td>
        </tr>
    </#list>

</table>

Map指令

<table>
   <#list stuMap ?keys as k>
       <tr>
           <td>${k.index - 1}</td>
           <td>${stuMap[k].name}</td>
           <td>${stuMap[k].age}</td>
           <td>${stuMap[k].money}</td>
       </tr>
   </#list>

</table>

if指令

<td<#if stuMap[k].name =="cxy" ></#if>>${k.index - 1}</td>

空值處理:判斷某變量是否存在使用??

<#if stuMap??>
    <tr> 
    <td<#if stuMap[k].name =="cxy" ></#if>>${k.index - 1}</td>
    <td>${stuMap[k].name}</td>
    <td>${stuMap[k].age}</td>
    <td>${stuMap[k].money}</td>
</tr>
</#if>

注意:缺失變量默認值使用!指定一個默認值,當變量為空時顯示默認值。

內建函數

1、集合大小:${集合名?size}

2、日期格式化:

${today?date},顯示年月日

${today?time},顯示時分秒

${today?datetime},顯示日期加時間

${today?string(yyyy-MM-dd)},按字符格式顯示

3、${money?c}將數字以字符串形式顯示,不然每三位添加一個逗號

4、將字符串轉成對象 <#assign data=text?eval/>

靜態化實現

1、使用模版文件靜態化

2、使用模版字符串靜態化

模版靜態化測試代碼

public class FreemarkerTest {
    @Test
    public void testGenerateHtmk() throws IOException, TemplateException {
        Configuration configuration = new Configuration(Configuration.getVersion());
        URL resource = this.getClass().getClassLoader().getResource("templates/");
        String path = resource.getPath();
        configuration.setDirectoryForTemplateLoading(new File(path));
        configuration.setDefaultEncoding("utf-8");
        Template template = configuration.getTemplate("test1.ftl");
        System.out.println(template);
        Map<String,Object> map = new HashMap<>();
        map.put("name","黑馬程序員");
        String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
        System.out.println(content);
    }
}

到此,關于“FreeMarker的原理和應用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遂昌县| 鄄城县| 徐闻县| 肥东县| 仙桃市| 柳河县| 闽清县| 法库县| 嘉义市| 东山县| 龙游县| 三河市| 山阳县| 兰溪市| 衡阳市| 建平县| 三穗县| 丹东市| 正阳县| 蒙自县| 岐山县| 深州市| 北票市| 漳浦县| 翁牛特旗| 井冈山市| 信阳市| 建阳市| 曲阳县| 互助| 成都市| 水富县| 古蔺县| 灯塔市| 垣曲县| 简阳市| 商水县| 门头沟区| 府谷县| 新建县| 伊金霍洛旗|