如何实现网页静态化

Posted 小鹿的技术杂谈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现网页静态化相关的知识,希望对你有一定的参考价值。

一.分析

    针对商城项目每个商品要对应生成一个html文件,保存在磁盘,访问文件就不一定使用tomcat,可以使用nginx访问。可以使用Freemarker工具实现。

二.Freemarker的使用方法

    第一步:添加Freemarker的jar包到工程中。

    第二步:Freemarker的运行不依赖外部容器,可以在java工程中使用。创建一个测试方法进行测试。

    第三步:创建一个Configuration对象。

    第四步:告诉Config对象模板对象存放的路径。

    第五步:设置默认的字符集。一般为utf-8。

    第六步:从Config对象中获得一个模板对象。需要指定一个模板对象的名字。

    第七步:创建模板需要的数据集。可以是一个Map对象,也可以是一个Pojo,把模板需要的数据存入数据集。

    第八步:创建一个Writer对象,指定生成的文件保存的路径及文件名。

    第九步:调用模板对象的process方法,生成静态文件。需要两个参数,数据集和Writer对象。

    第十步:关闭Writer。

三.Freemarker模板的写法

1.取简单的数据类型

    使用EL表达式。${hello}

2.包装数据类型

    根据ftl模板,创建pojo对象。

3.遍历集合数组

    数据集中添加list列表。

4.获取当前迭代的索引

    List<Student> list = new ArrayList<Student>();

    <#list students as s>

        ${s_index}

    </#list>

5.模板中的判断条件

    <#if 判断条件>

    <#else>

    </#if>

    逻辑运算符:==    !=     &&     ||    

 6.格式化日期

    默认格式:

    a. ${cur_time?date}

    b.${cur_time?time}

    c.${cur_time?datetime}

    自定义格式:

    ${cur_time?string("yyyy/MM/dd HH:mm:ss")}

7.null处理

    a.变空字符串         ${val!}

    b.给默认值            ${val!"val的默认值"}

8.include

    将另外一个页面引入到本页面

四.项目中使用Freemarker

    使用Freemarker整合spring。将Configuration交给Spring容器管理。

    依赖的jar包:


       <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-context-support</artifactId> 

       </dependency>

        <dependency>

            <groupId>org.freemarker</groupId>

            <artifactId>freemarker</artifactId> 

        </dependency>

1.Spring的配置文件

    <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>

2.静态文件生成的时间

    a.用户第一次访问时生成静态文件。  缺点:高并发的时候容易生成一半出现问题,一般不推荐。

    b.添加或者编辑商品时生成静态网页。此时需要发布服务供后台系统调用,当后台添加或者修改商品时调用此服务。

3.发布生成页面的服务

    a.获得数据

    b.生成静态页面

    c.相应生成成功

4.Service

    生成静态页面

5.创建Freemarker模板

6.Controller

    调用Service生成静态页面


以上是关于如何实现网页静态化的主要内容,如果未能解决你的问题,请参考以下文章

生成静态后的网页...有哪几种方式注入

php实现页面静态化

进阶实现页面静态化,PHP是如何实现的,你又是如何实现的

为什么做页面优化要用静态化,静态化如何落地?

如何实现dedecms(织梦CMS)管理系统TAG标签静态化?

aspnetcore 实现简单的伪静态化