我们在生成静态页面时需要先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生成静态页面_静态页面

下面是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生成静态页面_html_02