如果给代码挖坑?填坑呢?FreeMarker的使用

大家好,今天给大家分享一下FreeMarker的使用。

比如有一份代码,大部分都相同,但是有一些地方,固定的地方(如下红圈位置),会进行变化,那么我们如何去操作呢?
在这里插入图片描述

我们需要进行挖坑,将这些经常变化的地方,挖个坑,到时候再进行填坑。就类似于我们前端项目一样,比如你使用vue,创建一个文件出来,有很多地方,都不是直接写死数据的,而是将其从后台获取数据出来进行填坑。但是我们又不能搞一个vue这样的前后端获取数据,所以这里我们就使用了FreeMarker。

FreeMarker是什么?

一种用于生成动态内容的类库(或框架),通过将预定义的模板与特定数据合并,来生成最终的输出。

使用它的好处就是,我们只需要关心如何挖坑,设置数据可以,如何去填坑以及将数据和模板合并就交给了FreeMarker。

FreeMarker 官方文档:https://freemarker.apache.org/index.html
中文教程:http://freemarker.foofun.cn/toc.html
FreeMarker 教程网:http://www.freemarker.net/

快速入门

1.引入依赖

 <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.32</version>
        </dependency>

2.流程步骤按照官方的来就可以,5个步骤

在这里插入图片描述

public class FreeMarkerTest {

    @Test
    public void test() throws IOException, TemplateException {
        //1. new 出 Configuration 对象,参数为 FreeMarker 版本号
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);
        //指定模板文件所在的路径
        cfg.setDirectoryForTemplateLoading(new File("src/main/resources/templates"));
        //设置模板文件使用的字符集
        cfg.setDefaultEncoding("UTF-8");
        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
        cfg.setNumberFormat("0.######");
        //2.创建模板对象,加载指定模板
        Template temp = cfg.getTemplate("myweb.html.ftl");

        //3.指定数据
        Map<String, Object> dataModel = new HashMap<>();
        dataModel.put("currentYear", 2023);
        List<Map<String, Object>> menuItems = new ArrayList<>();
        Map<String, Object> menuItem1 = new HashMap<>();
        menuItem1.put("url", "https://asdfasdf.cn");
        menuItem1.put("label", "lihai");
        Map<String, Object> menuItem2 = new HashMap<>();
        menuItem2.put("url", "https://asdfasdf.com");
        menuItem2.put("label", "niubi");
        menuItems.add(menuItem1);
        menuItems.add(menuItem2);
        dataModel.put("menuItems", menuItems);

        //指定生成的文件
        Writer out = new FileWriter("myweb.html");
        /* 将模板和数据放在一起  调用process方法,处理并生成文件*/
        temp.process(dataModel, out);

        // 生成文件后别忘了关闭哦
        out.close();
    }
    }

其他用法

1.分支判断


<#if loop>
        while (scanner.hasNext()) {
</#if>
            // 读取输入元素个数
            int n = scanner.nextInt();

            // 读取数组
            int[] arr = new int[n];
            for (int i = 0; i < n; i++) {
                arr[i] = scanner.nextInt();
            }

            // 处理问题逻辑,根据需要进行输出
            // 示例:计算数组元素的和
            int sum = 0;
            for (int num : arr) {
                sum += num;
            }

            System.out.println("${outputText!'sum = '}" + sum);
<#if loop>
        }
</#if>

2.指定数据

 MainTemplateConfig mainTemplateConfig = new MainTemplateConfig();
        mainTemplateConfig.setLoop(false);
        mainTemplateConfig.setAuthor("Edwin");
        mainTemplateConfig.setOutputText("输出结果是");
template.process(mainTemplateConfig , out);

好了,今天的内容就分享到这里,谢谢大家

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值