首页 > 其他分享 >使用FreeMacker生成静态页面

使用FreeMacker生成静态页面

时间:2023-12-08 19:32:30浏览次数:23  
标签:Configuration 静态 FreeMacker html 字符串 new configuration 模板 页面


 

        我们在生成静态页面时需要先new一个configuration对象,并将Freemacker的版本给它,如果我们的模板是文件则我们需要获得他的路径,以及使用DirectoryForTemplateLoading驱动,如果是字符串,则使用StringTemplateLoader驱动,通常我们是用的字符串驱动,之后我们将模板驱动放入configuration中,当然我们也可以使用

configuration.setDefaultEncoding("utf-8");来设置字符串编码,再调用getTemplate方法获得模板,这时我们就可以使用FreeMarkerTemplateUtils.processTemplateIntoString(tem, map);来生成静态页面了。

两种方式的代码如下:

这里使用的是文件模板的方式;注意:输入流信息不能被打印,否则合适时将丢失输入流

				//获取配置类对象
        Configuration configuration = new Configuration(Configuration.getVersion());
        //获取模板路径
        String path = this.getClass().getResource("/templates/").getPath();
        //将模板文件放入configuration中
        configuration.setDirectoryForTemplateLoading(new File(path));
        //设置模板字符
        configuration.setDefaultEncoding("utf-8");
        //获取模板对象
        Template template = configuration.getTemplate("stu.ftl");
        //获取模板数据
        Map model = this.getModel();
        //利用工具类将模板和数据结合在一块
        String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
        //创建输入流
        InputStream inputStream = IOUtils.toInputStream(html, "utf-8");
        //System.out.println(IOUtils.toString(inputStream));//使用过程中这里不能进行输出,否则会导致流信息被输出合并时出现空信息
        //创建输出流
        FileOutputStream outputStream = new FileOutputStream(new File("文件路径\\stu.html"));
        //合并输入输出流
        IOUtils.copy(inputStream,outputStream);
        //关闭流对象
        inputStream.close();
        outputStream.close();

使用FreeMacker生成静态页面_Freemacker

下面是string字符串的方式来生成:

				//创建Freemacker配置对象
        Configuration configuration = new Configuration(Configuration.getVersion());
        //获得字符串模板加载器
        StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
        //将字符串模板放入字符串模板加载器中
        stringTemplateLoader.putTemplate("temp",template);
        //将字符串模板加载器放入配置中
        configuration.setTemplateLoader(stringTemplateLoader);
        //设置编码
        configuration.setDefaultEncoding("utf-8");
        //获得模板
        try {
            Template tem = configuration.getTemplate("temp");
            //通过Freemacker的工具类生成模板
            String html = FreeMarkerTemplateUtils.processTemplateIntoString(tem, map);
            return html;
        } catch (IOException e) {
            log.error("模板获取异常{}",e.getMessage());
            e.printStackTrace();
        } catch (TemplateException e) {
            log.error("模板生成异常",e.getMessage());
            e.printStackTrace();
        }

使用FreeMacker生成静态页面_输入流_02



标签:Configuration,静态,FreeMacker,html,字符串,new,configuration,模板,页面
From: https://blog.51cto.com/u_15152703/8741470

相关文章

  • 在winform中使用blazor hybrid构建页面
    1、BlazorHybrid简介BlazorHybrid使开发人员能够将桌面和移动本机客户端框架与.NET和Blazor结合使用。在BlazorHybrid应用中,Razor组件在设备上是本机运行的。这些组件通过本地互操作通道呈现到嵌入式Web视图控件。组件不在浏览器中运行,并且不涉及WebAssembly。R......
  • 静态HTTP的基础知识:菜鸟的教程与指南
    大家好,今天我要给大家讲解一个非常基础但重要的知识点——静态HTTP。如果你是一位初入互联网的小白,对于HTTP这个缩写可能还有些陌生。没关系,今天我们就来揭开它的神秘面纱。首先,让我们想象一下,当你在浏览器中输入一个网址,比如www.example.com,你的浏览器就开始和这个网站的服务器进......
  • 如何设置和使用静态HTTP服务器
    随着互联网技术的不断发展,越来越多的企业和个人开始使用静态HTTP服务器来展示自己的网站内容。静态HTTP服务器是指服务器上存储着静态网页文件,当用户请求访问这些网页时,服务器直接将文件发送给用户的浏览器进行展示。本文将介绍如何设置和使用静态HTTP服务器。一、选择合适的服务器......
  • 静态HTTP和动态HTTP的区别:理解二者的优势和局限
    在互联网的世界里,HTTP(HypertextTransferProtocol)是当之无愧的“交通规则”。它负责在浏览器和服务器之间传输数据,让你可以在网页上浏览、互动和下载内容。根据动态和静态的不同,HTTP网站可以分为静态HTTP网站和动态HTTP网站。这两种类型网站都有其特定的优势和局限。静态HTTP网站:......
  • 静态HTTP和动态HTTP的混合使用:最佳实践
    在当今的互联网环境中,静态HTTP和动态HTTP各有其优势和局限。静态HTTP具有速度快、安全性高和易于维护的特点,而动态HTTP则能够实现动态交互和处理大量动态数据。为了充分利用两者的优势,越来越多的网站开始采用静态HTTP和动态HTTP混合使用的模式。本文将探讨这种混合模式的最佳实践。......
  • 通过静态HTTP实现负载均衡
    在当今的互联网环境中,随着用户数量的不断增加和业务需求的不断扩大,单台服务器往往无法承受所有的访问压力。为了确保网站的可用性和性能,负载均衡成为了一种常见的解决方案。本文将探讨如何通过静态HTTP实现负载均衡,以提升网站的性能和可扩展性。负载均衡是通过将来自客户端的请求分......
  • 使用静态HTTP提供动态内容
    在Web开发中,静态HTTP和动态HTTP常被视作两种截然不同的技术。静态HTTP主要用于传输不变的内容,如HTML、CSS和JavaScript文件,而动态HTTP则能处理用户交互、实时数据等动态需求。但鲜为人知的是,我们其实可以通过一些技巧,用静态HTTP来提供动态内容。本文将深入探讨这一主题。首先,为什么......
  • uniapp滑动页面时警告Unable to preventDefault inside passive event listener due t
    翻译:没有添加被动事件监听器来阻止’touchstart‘事件,请考虑添加事件管理者’passive’,以使页面更加流畅。原因:由于浏览器必须要在执行事件处理函数之后,才能知道有没有掉用过 preventDefault(),这就导致了浏览器不能及时响应滚动,略有延迟。所以为了让页面滚动的效果如丝般顺滑......
  • 开发板设置成静态ip的方式
    1开发板每次重新上电都要手动去分配ip地址才能与ubuntu通信,设置成静态ip的方式就不需要每次开发板重启后去设置一次ip地址。2在网上找了很多帖子,照着做都没有效果,直到看到一个帖子说vi/etc/profile在最后一行添加:ifconfigeth0192.168.1.100,重启开发板就可以了。关于/etc/p......
  • 【Nginx/IIS】解决uniapp/Vue history模式下页面刷新404
    uniapp/Vue开启History模式本地开发:二级页面刷新或者通过链接进入二级页面是正常的打包部署后:二级页面刷新或者通过链接进入二级页面会报错404页面找不到 解决方案:Nginx配置:在nginx.conf的对应location里配置一行代码try_files$uri$uri//index.html;location/h5{......