Spring整合FreeMarker生成静态页面(静态模板)

页面静态化介绍

当我们访问类似于商品详情页这种页面,里面的数据都是查询数据库来的,
就是对于这种页面来说,每次用户访问这中页面都需要查询数据库获取动态数据进行展示,而且这种页面的访问量是比较大的,这就对数据库造成了很大的访问压力,并且数据库中的数据变化频率并不高。那我们需要通过什么方法为数据库减压并提高系统运行性能呢?答案就是页面静态化。
页面静态化其实就是将原来的动态网页(例如通过ajax请求动态获取数据库中的数据并展示的网页)改为通过静态化技术生成的静态网页,这样用户在访问网页时,服务器直接给用户响应静态html页面,没有了动态查询数据库的过程。
那么这些静态HTML页面还需要我们自己去编写吗?其实并不需要,我们可以通过专门的页面静态化技术帮我们生成所需的静态HTML页面,例如:Freemarker、thymeleaf等。

1、导入FreeMarker依赖

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

2、在spring的配置文件中配置FreeMarkerConfigurer对象

<bean id="freemarkerConfig"
      class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <!--指定模板文件所在目录-->
    <property name="templateLoaderPath" value="/WEB-INF/ftl/" />
    <!--指定字符集-->
    <property name="defaultEncoding" value="UTF-8" />
</bean>
<!--配置生成文件的输出路径-->
<context:property-placeholder location="classpath:freemarker.properties"/>

3、定义模板
​ 在模板里面使用的注意事项:
​ 1、文本,直接输出的部分
​ 2、注释,即<#–…-->格式不会输出
​ 3、插值(Interpolation):即${…}部分,
​ 将使用数据模型中的部分替代输出
​ 4、FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以
​ 区分,不会输出
​ Freemarker的模板文件后缀可以任意,一般建议为ftl

4、定义生成模板文件的工具类

参数:模板名称、生成的静态页面的名称、注入到静态页面的数据

public void generateHtml(String templateName,String htmlPageName,Map<String,
Object> dataMap){
    Configuration configuration = freeMarkerConfigurer.getConfiguration();
    Writer out = null;
        try {
            // 加载模版文件
            Template template = configuration.getTemplate(templateName);
            // 生成数据
            File docFile = new File(outputpath + "\\" + htmlPageName);
            out = new BufferedWriter(new OutputStreamWriter(new 	FileOutputStream(docFile)));
            // 输出文件
            template.process(dataMap, out);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != out) {
                    out.flush();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值