springboot2.0结合freemarker生成静态化页面

目录

  • 1. pom.xml配置
  • 2. application.yml配置
  • 3. 使用模板文件静态化
    • 3.1 创建测试类,编写测试方法
    • 3.2 使用模板字符串静态化

使用freemarker将页面生成html文件,本节测试html文件生成的方法:

1、使用模板文件静态化
定义模板文件,使用freemarker静态化程序生成html文件。
2、使用模板字符串静态化
定义模板字符串,使用freemarker静态化程序生成html文件。

1. pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2. application.yml配置

server:
  port: 8088
spring:
  application:
    name: test-freemarker
  #    freemarker配置
  freemarker:
    cache: false  #关闭模板缓存,方便测试
    settings:
      template_update_delay: 0  #检查模板更新延迟时间,设置为0表示立即检查,如果时间大于0会有缓存不方便进行模板测试
    template-loader-path: classpath:/templates
    charset: UTF-8
    check-template-location: true
    suffix: .ftl
    content-type: text/html
    expose-request-attributes: true
    expose-session-attributes: true
    request-context-attribute: request

3. 使用模板文件静态化

3.1 创建测试类,编写测试方法

package com.example.demo;

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

import org.apache.commons.io.IOUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

/**
 * @author john
 * @date 2019/12/20 - 19:09
 */
@SpringBootTest
public class TestFreemarkerHtml {
    //基于模板生成静态化文件
    @Test
    public void testGenerateHtml() throws IOException, TemplateException {
        //创建配置类
        Configuration configuration = new Configuration(Configuration.getVersion());
//设置模板路径
        String classpath = this.getClass().getResource("/").getPath();
        configuration.setDirectoryForTemplateLoading(new File(classpath + "/templates/"));
        //设置字符集
        //configuration.setDefaultEncoding("UTF‐8");
        //加载模板
        Template template = configuration.getTemplate("test1.ftl");
        //数据模型
        Map<String, Object> map = new HashMap<>();
        map.put("name", "john");
        //静态化
        String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
        //静态化内容
        System.out.println(content);
        InputStream inputStream = IOUtils.toInputStream(content);
        //输出文件
        FileOutputStream fileOutputStream = new FileOutputStream(new File("d:/test/test1.html"));
        int copy = IOUtils.copy(inputStream, fileOutputStream);
    }
}

编写模板

<html>
<head>
    <title>hello world!</title>
</head>
<body>
${name}<br/>
<#assign text="{'bank':'工商银行','account':'10101920201920212'}" />
<#assign data=text?eval />
开户行:${data.bank} 账号:${data.account}
</body>
</html>

生成文件

3.2 使用模板字符串静态化

package com.example.demo;

import freemarker.cache.StringTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import org.apache.commons.io.IOUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

/**
 * @author john
 * @date 2019/12/20 - 19:09
 */
@SpringBootTest
public class TestFreemarkerHtml {
    //基于模板字符串生成静态化文件
    @Test
    public void testGenerateHtmlByString() throws IOException, TemplateException {
        //创建配置类
        Configuration configuration = new Configuration(Configuration.getVersion());
        //模板内容,这里测试时使用简单的字符串作为模板
        String templateString = "" +
                "<html>\n" +
                "  <head></head>\n" +
                "  <body>\n" +
                "  名称:${name}\n" +
                "  </body>\n" +
                "</html>";

        //模板加载器
        StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
        stringTemplateLoader.putTemplate("template", templateString);
        configuration.setTemplateLoader(stringTemplateLoader);
        //得到模板
        Template template = configuration.getTemplate("template", "utf‐8");
        //数据模型
        Map<String, Object> map = new HashMap<>();
        map.put("name", "john");
        //静态化
        String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
        //静态化内容
        System.out.println(content);
        InputStream inputStream = IOUtils.toInputStream(content);
        //输出文件
        FileOutputStream fileOutputStream = new FileOutputStream(new File("d:/test/test2.html"));
        IOUtils.copy(inputStream, fileOutputStream);
    }
}

原文地址:https://www.cnblogs.com/ifme/p/12074776.html

时间: 2024-10-13 20:04:59

springboot2.0结合freemarker生成静态化页面的相关文章

利用PHP的ob函数实现生成静态化页面

之前用过一些开源的CMS管理系统,当时就很好奇后台中的生成HTML静态文件是怎么实现的.今天和同事讨论了下,没想到同事之前做过这类的生成静态页面的功能,果断向他请教了下. 经他讲解后,才知道其实生成静态HTML页面很简单.PHP提供了专门的函数来实现. 以下整理出方法(实现生成html这应该只是其中一种方法): 通过php的ob缓存来实现 提高速度 1,通过php的ob缓存来实现 使用php的ob缓存实现页面静态化 修改php.ini配置文件 output_buffering=Off 1,缓存:

小蚂蚁学习页面静态化(2)——更新生成纯静态化页面的三种方式

更新生成纯静态化页面的三种方式:1.按照时间间隔更新.2.手动更新.3.定时更新(需要系统配合). 1. 按照时间间隔更新. 当用户第一次访问这个页面的时候,程序自动判断,该静态文件是否存在,并且该文件是否还在有效时间内,如果该文件未超出了有效时间,用户访问的是已经生成的静态文件.如果超出了有效时间,用户得到的是动态输出的内容,同时重新生成静态文件.稍微修改一下昨天的代码为例: <?php //首先判断是否有静态文件,并且文件的最新修改时间到现在是否大于20秒 if(is_file('./tex

PHP静态化页面(转载)

什么是PHP静态化PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同. 将PHP的执行页面预先转换成HTML,是所谓的PHP静态化方法之一. 为什么要让网页静态化 一.加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高:二.有利于搜索引擎优化SEO,Baidu.Google都会优先收录静态页面,不仅被收录的快还收录的全:三.减轻服务器负担,浏览网页无需调用系统数据库:四

静态化页面点击数实时的呈现的两种方法

静态化页面有时需要某一块“活起来”...在做新闻类项目时会碰到点击量排行,需要实时的进行显示, 以下是实现的两种方法: 第一种方法:通过AJAX实现:将数据提交给PHP文件经行处理,并将处理后的结果返回: $(function(){ $.ajax({ url:'{$smarty.const.BASE_URL}news/clickNews.php', data:'id={$arr.id}', success:function(re){ $("#showNewsTop").html(re)

apache静态化页面

Apache开启静态化页面 博主未解决的坑: 本人首次搭建LAMP采用的是编译安装HTTPD服务,在开启静态化页面时发现在httpd.conf中没有LoadModule rewrite_module libexec/mod_rewrite.so代码,手动添加进去重启apache时报错: 查看文件.htaccess也正常: # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^

使用freemarker生成静态页面

一 说明 需要在spring mvc项目中加入下列包: <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>${freemarker.version}</version> </dependency> 如果你还想使用freemarker实现表现层,那么还需要导入下列包: <de

ThinkPHP的静态化页面方法

原来ThinkPHP自带了生成静态页的函数buildHtml,使用起来很方便!最新的手册里没写这个方法,向大家介绍一下.     protected function buildHtml($htmlfile='',$htmlpath='',$templateFile='') {         $content = $this->fetch($templateFile);         $htmlpath   = !empty($htmlpath)?$htmlpath:HTML_PATH;  

【转载】JSP生成静态Html页面

在网站项目中,为了访问速度加快,为了方便百度爬虫抓取网页的内容,需要把jsp的动态页面转为html静态页面.通常有2种常用的方式: 1.伪静态,使用URL Rewriter 2.纯静态,本文中代码实现的就是纯静态,Servlet实现. 代码: [java] view plain copy import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOException; import

java自适应响应式 企业网站源码 SSM freemaker生成静态化 手机 平板 PC springmvc

java 企业网站源码 前后台都有 静态模版引擎, 代码生成器大大提高开发效率 前台: 支持两套模版, 可以在后台切换 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的html,所以访问速度快,轻便,对服务器负担小 3.网站前端采用主流的响应式布局,同一页面同时支持PC.平板.手机(三合一)浏览器访问 4.springmvc +spring4.2.5+ mybaits3.3  SSM 普通java we