首页 > 编程语言 >java使用freemarker模板插件生成html页面

java使用freemarker模板插件生成html页面

时间:2022-11-11 17:44:39浏览次数:48  
标签:插件 java freemarker html import new 模板

1、功能描述:使用java代码,根据指定的ftl模板文件,生成html静态页面文件

 

freemarker模板是直接可以与SSM这种java web项目、或springboot 整合的,不做前后分离。跟jsp差不多。

 

先描述两种使用方式:

  1、java代码中直接运行main方法,根据ftl模板文件,生成html文件

  2、java web配置freemarker,像jsp一样,做一个单体项目。

 

 

先来第一种:1、java代码中直接运行main方法,根据ftl模板文件,生成html文件

 

  1.1、导入freemarker的maven依赖:我用的是springboot,4.0以上版本,如果项目是spring 4.0版本以下,用freemarker 2.3以上可能会报错,改低版本用freemarker 2.2便行

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

 

  1.2、在D:/test001目录下,放一个hello.ftl模板,内容如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
    <title>Hello World222!</title>
</head>
<body>

    <p>
        welcome
    </p>
    <p>
        ${hello}
    </p>

    <p>性别:
        <#if sex==0>
                  女
           <#elseif sex==1>
                  男
           <#else>
                  保密
        </#if>
    </p>

    <h4>我的好友:</h4>
    <#list friends as item>
           姓名:${item.name} , 年龄${item.age}
       <br>
    </#list>
    

</body>
</html>

 

  1.3、建一个FreemarkerUtil.java工具类直接进行测试看看

package com.jzproject.common.util.freeMarker;

import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FreeMarkerDemo2 {


    public static Map getDataModel(){
        Map resultMap = new HashMap();

        resultMap.put("hello", "第一个显示数据:hello!");

        resultMap.put("sex", 1); //性别


//        list列表数据
        List<Map<String, Object>> friends = new ArrayList<Map<String, Object>>();
        Map<String, Object> friend = new HashMap<String, Object>();
        friend.put("name", "xbq");
        friend.put("age", 22);
        friends.add(friend);
        friend = new HashMap<String, Object>();
        friend.put("name", "July");
        friend.put("age", 18);
        friends.add(friend);
        resultMap.put("friends", friends);





        return resultMap;
    }


    public static void main(String[] args) {


        try{
            // 第一步:创建一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。
            Configuration configuration = new Configuration(Configuration.getVersion());
            // 第二步:设置模板文件所在的路径,一般都在web项目WEB-INF下的ftl文件夹中
//            configuration.setDirectoryForTemplateLoading(new File("D:/web/src/main/webapp/WEB-INF/ftl"));
            configuration.setDirectoryForTemplateLoading(new File("D:/test001"));

            // 第三步:设置模板文件使用的字符集。一般就是utf-8.
            configuration.setDefaultEncoding("utf-8");
            // =================================================第四步:加载一个模板,创建一个模板对象。
            Template template = configuration.getTemplate("hello.ftl");


            // =======================================第五步:创建一个模板使用的数据集,可以是pojo也可以是map。一般是Map。
//            Map dataModel = new HashMap<>();
//            //向数据集中添加数据
//            dataModel.put("hello", "this is my first freemarker test.");

            Map dataModel = getDataModel();//获取页面要展示的数据map对象



            // =======================================第六步:创建一个Writer对象,一般创建一FileWriter对象,指定生成的文件名,一般生成的文件都统一放在一个文件夹中,方便查找
            Writer out = new FileWriter(new File("D:/test001/hello.html"));
            // 第七步:调用模板对象的process方法输出文件。
            template.process(dataModel, out);
            // 第八步:关闭流。
            out.close();
        }catch (Exception e){
            e.printStackTrace();
        }



    }






}

 

  生成hello.html文件成功,浏览器打开如下:

 

 

 

 

 

============================================第二种:把freemarker做springboot的页面展示

  2.1、导入freemarker与springboot的插件包

<!--springboot应用freemarker,像jsp一样直接跳转到.ftl或.html模板页面,并传数据显示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

 

  2.2、然后直接在项目的resources/templates/freemarker目录下建一个freemarker.html文件,内容如下:

 

 

  freemarker.html文件内容:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
    <title>Hello World!</title>
</head>
<body>
<center>
    <p>
        welcome ${name} to freemarker! 333html
    </p>

    <p>性别:
        <#if sex==0>
        女
        <#elseif sex==1>
        男
        <#else>
        保密
    </#if>
    </p>

    <h4>我的好友:</h4>
    <#list friends as item>
    姓名:${item.name} , 年龄${item.age}
    <br>
</#list>
</center>
</body>
</html>

 

 

  2.3、直接用controller类直接跳到此freemarker.html页面,如:

 

 

 

  2.4、打开此项目路径访问:localhost:8080/project/freemarkerTest1

 

 

 

 

 

 

 

标签:插件,java,freemarker,html,import,new,模板
From: https://www.cnblogs.com/spll/p/16881265.html

相关文章

  • DAY1(3)JAVA环境搭建
    JAVA开发环境搭建JDK下载与安装oracle官网下载jdk8记住安装路径配置环境变量我的电脑-->右键-->属性环境变量-->JAVA_HOME配置path变量测试命令......
  • JavaScript常用工具函数
    检测数据是不是除了symbol外的原始数据functionisStatic(value){return(typeofvalue==='string'||typeofvalue==='number'||typeofvalue......
  • 要学完Java大概需要多长时间
      其实学习任何东西都一样,包括学习Java。刚开始我们可以使用快速浏览全局的方法来去学习它,不要过多的去涉及细节问题,记不住就不记了。在这刚开始的阶段学习什么,就专心去......
  • JavaScript中常见的八个陷阱总结
    1.你是否尝试过对数组元素进行排序?JavaScript默认使用字典序(alphanumeric)来排序。因此, [1,2,5,10].sort()的结果是[1,10,2,5]。如果你想正确的排序,应该这样做: [1......
  • Java用正则表达式提取字符串中的字母和数字
    最新碰到个需求,需要从一个字符串中提取所有的数字和字符串,花了一些时间研究了下正则和相关类库后解决了,特此记录下代码如下:publicStringextractNumAndLetter(Strings......
  • 如何通过Java导出带格式的 Excel 数据到 Word 表格
    在Word中制作报表时,我们经常需要将Excel中的数据复制粘贴到Word中,这样则可以直接在Word文档中查看数据而无需打开另一个Excel文件。但是如果表格比较长,内容就会存在一定程......
  • Java8新特性 - 04 - 方法引用06 - 方式五 【类名[]::new
    参考:https://blog.csdn.net/qq_39505245/article/details/1231427801.类名[]::new`1.将Lambda表达式替换为【类名[]::new】的写法。2.确保【数组的构造方法】的......
  • JAVA 六种常见线程池
    在我们日常业务开发中,如果遇到使用线程池的场景时,会先去思考一下这种场景需要使用到怎样的线程池,去避免线程资源滥用。这个时候选择困难症就来了,不过不用担心,Java其实早......
  • Linux 定时任务crontab监控重启java服务脚本
    linux服务器下,利用Linux定时器和简单监控脚本,监控自动重启java服务。注意:脚本最好在Linux系统中用touch建立.sh文件,并用shmod+x+‘脚本文件名’,在window下编辑有可能会......
  • java 更新list内的元素
    参考:https://blog.csdn.net/liangqi1234/article/details/50176451/***更新list内的元素。*@paramobjlist*@paramoldObj旧对象*@paramnewObj要更新的对象*......