FreeMarker的使用(上)

简介: FreeMarker的使用

一. FreeMarker 的介绍


FreeMarker 的官方网址: http://freemarker.foofun.cn/index.html


解释的很详细,直接看官方网址就可以了。


二. Java 使用FreeMarker


二.一 前期准备


创建一个 Maven 项目, 在 pom.xml 中添加 依赖


 <!--添加FreeMarker的依赖 ,版本是 2.3.29-->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.29</version>
        </dependency>
        <!--测试junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!--lombok依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>


5637498818fbef374fc6538f2d012929.png


resources 目录下的 freemark 文件夹对应的目录是: D:\learncode\Template\FreeMark\Basic\src\main\resources\freemark


二.二 模板开发


这儿不与 Web 进行关联,不采用页面展示, 采用控制台输出。


二.二.一 单个属性展示


二.二.一.一 单个属性模板 FTL


创建 hello.ftl 文件


<html>
<head>
    <title>${title}</title>
</head>
<body>
    Hello ${info}
</body>
</html>


有两个属性 title 和 info 进行填充。


二.二.一.二 单个属性开发


@Test
    public void fillBaseTest() throws Exception{
        //1. 指定配置,对应着哪一个版本
         Configuration configuration=new Configuration(
                 Configuration.VERSION_2_3_29
         );
         //设置目录
         configuration.setDirectoryForTemplateLoading(
                 new File("D:\\learncode\\Template\\FreeMark\\Basic\\src\\main\\resources\\freemark")
         );
         //指定编码
        configuration.setDefaultEncoding("utf-8");
        //指定异常处理器
        configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
        //开始创建数据
        Map<String,Object> root=new HashMap<>();
        root.put("title","Hello Freemark");
        root.put("info","两个蝴蝶飞");
        //找到要设置的,对应的模板
        Template template=configuration.getTemplate("hello.ftl","utf-8");
        //写出到控制台
        Writer out=new OutputStreamWriter(System.out);
        //进行填充 数据和信息。
        template.process(root,out);
    }


f00f094784bce0ebb61a2f6592a62456.png


二.二.二 单个对象展示


二.二.二.一 单个对象模板 FTL


创建 info.ftl 文件


<html>
<head>
    <title>Welcome ${web} </title>
</head>
<body>
<h1>Welcome ${user}!</h1>
<p>Our latest product:
    <a href="${info.url}">${info.name}</a>!
</body>
</html>


web, user 属性是单个属性, info.url, info.name 可以知道, info 是个对象。


二.二.二.二 单个对象开发


@Test
    public void fillInfoTest() throws Exception{
        //1. 设置相应的 Configuration
        Configuration configuration=new Configuration(Configuration.VERSION_2_3_29);
        //2. 设置基本的目录
        configuration.setDirectoryForTemplateLoading(
                new File("D:\\learncode\\Template\\FreeMark\\Basic\\src\\main\\resources\\freemark")
        );
        //3. 设置编码
        configuration.setDefaultEncoding("utf-8");
        //设置错误处理器
        configuration.setTemplateExceptionHandler(
                TemplateExceptionHandler.RETHROW_HANDLER
        );
        //4. 构建数据
        Map<String,Object> root=new HashMap<>();
        root.put("web","百度");
        root.put("user","两个蝴蝶飞");
        Map<String,Object> info=new HashMap<>();
        info.put("url","www.yueshushu.top");
        info.put("name","百度");
        root.put("info",info);
        //5. 获取对应的模板
        Template template=configuration.getTemplate("info.ftl");
        //6.构建输出对象
        Writer out=new OutputStreamWriter(System.out);
        //7. 调用 process 方法,进行填充数据
        template.process(root,out);
    }


c52e1e005b2cedf8d1dd18a5870130d2.png


二.二.三 If 展示


二.二.三.一 IF模板 FTL


创建 if.ftl 文件


<html>
<head>
    <title>Welcome ${web} </title>
</head>
<body>
<!--单个if展示-->
<h1>Welcome ${user}! <#if user='yjl'>,领导牛逼</#if></h1>
<p>Our latest product:
    <a href="${info.url}">${info.name}</a>!
<h2>性别是:</h2>
<!--if else 展示-->
<#if sex=='男'>
<#else>
</#if>
<h2>成绩是:</h2>
<!--if elseif else-->
<#if score &gt;90 >
<#elseif score &gt;80>
<#elseif score &gt;70>
<#elseif score &gt;60>
<#else>
</#if>>
</body>
</html>


二.二.三.二 IF 开发


@Test
    public void ifFillTest() throws Exception{
        //1. 通过版本,获取相关的配置
        Configuration configuration=new Configuration(Configuration.VERSION_2_3_29);
        //2. 设置扫描的包的基本路径
        configuration.setDirectoryForTemplateLoading(
                new File("D:\\learncode\\Template\\FreeMark\\Basic\\src\\main\\resources\\freemark")
        );
        //3. 设置基本路径
        configuration.setDefaultEncoding("utf-8");
        //4. 设置数据
        Map<String,Object> root=new HashMap<>();
        root.put("web","IF验证");
        root.put("user","yjl2");
        Map<String,Object> info=new HashMap<>();
        info.put("url","www.baidu.com");
        info.put("name","百度");
        root.put("info",info);
        root.put("sex","女");
        root.put("score",75);
        //5. 获取对应的模板文件
        Template template=configuration.getTemplate("if.ftl");
        //6. 输出到控制台
        Writer out=new OutputStreamWriter(System.out);
        //7. 通过 process() 方法进行填充数据和输出信息对象.
        template.process(root,out);
    }


f342b7680b169354ac336a99e44b8875.png

相关文章
|
6月前
|
XML Java 数据格式
freemarker使用总结
freemarker使用总结
|
6月前
|
XML Java 数据格式
freemarker
freemarker
|
6月前
|
前端开发 JavaScript Java
Thymeleaf一篇文章学会使用
Thymeleaf一篇文章学会使用
65 0
|
前端开发 Java 应用服务中间件
Thymeleaf
模板引擎 前端交给我们的页面,是html页面。如果是我们以前开发,我们需要把他们转成jsp页面,jsp好处就是当我们查出一些数据转发到JSP页面以后,我们可以用jsp轻松实现数据的显示,及交互等。
Thymeleaf
|
Web App开发 安全 Java
一篇很全面的freemarker教程
FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:格式部分,不会输出 3,插值:即${...}或#{..
1894 0
|
前端开发 Java
Freemarker - 基础篇(上)
Freemarker - 基础篇(上)
353 0
Freemarker - 基础篇(上)
|
前端开发
Freemarker - 基础篇(下)
Freemarker - 基础篇(下)
199 0
Freemarker - 基础篇(下)
|
XML 前端开发 JavaScript
Thymeleaf的使用
最近听说thymeleaf好像也挺流行的,还说是spring官方推荐使用,那thymeleaf究竟是什么呢?spring为什么推荐用它呢?怎么用呢?本文将为你揭秘!
Thymeleaf的使用
|
XML Java Maven
Freemarker(上)
Freemarker(上)
164 0
Freemarker(上)
|
消息中间件 Java 应用服务中间件
Freemarker(下)
Freemarker(下)
171 0
Freemarker(下)