##Freemarker模板引擎的分享

网页静态化技术 -Freemarker



原因:在我们开发过程中,一般会大量的网页静态化部分的解决问题,例如新闻网站的那些静态新闻,再比如我们大型的电商项目,每个商品的详情页,都是一些静态资源,如果每次用户访问都要去数据库中访问,那么无疑会造成高并发的现象,而且造成资源的浪费。

技术:网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力,但是具体的应用场景不同,缓存比较适合小规模的数据,而网页静态化比较适合大规模且相对变化不太频繁的数据。另外网页静态化还有利于SEO。

  另外我们如果将网页以纯静态化的形式展现,就可以使用Nginx这样的高性能的web服务器来部署。Nginx可以承载5万的并发,而Tomcat只有几百。

##一,那我们来认识下什么时Freemarker吧?



  FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成 XML,JSP 或 Java 等。

##二,来个小的工程我们来体验下:



项目依赖:

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

以前的时候可能我们还写过信,或者现在很多人也会写请假条之类的,会发现那个东西是不是一种模板呢?

亲爱的**,你好!
    ************************************************************************
                                                署名:
                                                日期:

那么我们今天就来创建一个:

<html>
<head>
    <meta charset="utf-8">
    <title>Freemarker入门小DEMO </title>
</head>
<body>
<#--我只是一个注释,我不会有任何输出  -->
${name},你好。${message}
</body>
</html>

下面我们来创建一个类:

package cn.liurui.core.demo;

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

import java.io.File;
import java.io.FileWriter;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @author liurui
 * @date $ {DATE} 12:04
 */
public class Freemarker_Demo {
    public static void main(String[] args) throws Exception{
        //准备数据模型 可以是json数据,也可以是javabean数据类型
        Map dataMap = new HashMap();
     //配置freemarker
        //设置configuration的配置
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_23);
        //设置模板路径
        configuration.setDirectoryForTemplateLoading(new File("D:/Users/Administrator/      shop_pinyougou_demo_parent/freemarker_demo/src/main/resources"));
        //设置模板内容编码
        configuration.setDefaultEncoding("utf-8");
        //设置模板对象
        Template template = configuration.getTemplate("index.ftl");
        //设置模板文件
        FileWriter writer = new FileWriter("D:/1.html");
        //合成输出
        template.process(dataMap,writer);
        //关闭
        writer.flush();
        writer.close();
    }
}
    //5.创建数据模型
        Map map=new HashMap();
        map.put("name", "张三 ");
        map.put("message", "欢迎来到神奇的Freemarker世界!");

然后我们启动这个主方法:就会在页面上看到我们会输出 张三,欢迎来到神奇的Freemarker世界!

如果这个Freemarker模板仅仅只能做到这么简单的,那我们也不会用它是吧。。。。

下面我们来看看Ftl指令:



<#assign linkman="赵四">

联系人:${linkman}//联系人:赵四
<#assign info={"mobile":"110",‘address‘:‘黄河西路‘} >
电话:${info.mobile}  地址:${info.address}//电话:110  地址:黄河西路

##一,我们一般网页前端写的页面,如果几个页面头部相同,会单独写一个头部,然后通过inculde命令去导入,那么我们模板也会有这个指令:

<#include "head.ftl">

##二,if指令

在我们的类中我们会添加一个:

dataMap.put("success",false);//当为true时,为ok,当为false时,为no
<#if success=true>
  ok
<#else>
  no
</#if>

##三,list指令

        List goodsList=new ArrayList();
        Map goods1=new HashMap();
        goods1.put("name", "苹果");
        goods1.put("price", 5.8);
        Map goods2=new HashMap();
        goods2.put("name", "香蕉");
        goods2.put("price", 2.5);
        Map goods3=new HashMap();
        goods3.put("name", "橘子");
        goods3.put("price", 3.2);
        goodsList.add(goods1);
        goodsList.add(goods2);
        goodsList.add(goods3);
        map.put("goodsList", goodsList);

在我们的模板中添加;

----商品价格表----<br>
<#list goodsList as goods>
  ${goods_index+1} 商品名称: ${goods.name} 价格:${goods.price}<br>
</#list>
打印结果:
1 商品名称:苹果 价格:5.8
2 商品名称:香蕉 价格:2.5
3 商品名称:橘子 价格:3.2

##四,我们需要将json字符串转成对象:

    <#assign text="{‘bank‘:‘工商银行‘,‘account‘:‘10101920201920212‘}" />
    <#assign data=text?eval />
    开户行:${data.bank}  账号:${data.account}

##五,日期格式:

  Map dataMap = new HashMap();
        dataMap.put("today",new Date());
        /**
         * 当前日期:2019-9-30
         当前时间:16:38:50
         当前日期加时间;2019-9-30 16:38:50
         日期格式化:2019年09月30日 16时38分50秒
         */
当前日期:${today?date}<br>
当前时间:${today?time}<br>
当前日期加时间;${today?datetime}<br>
日期格式化:${today?string("yyyy年MM月dd日 HH时mm分ss秒")}

##六,判断变量是否存在?

<#if aaa??>
    aaa变量存在
<#else >
aaa变量不存在
</#if>

原文地址:https://www.cnblogs.com/liurui-bk517/p/11613846.html

时间: 2024-08-03 15:33:14

##Freemarker模板引擎的分享的相关文章

Spring Boot? 使用freemarker模板引擎渲染web视图

效果图 代码 package com.wls.integrateplugs.hello.controller; /** * Created by wls on 2017/8/24. */ import java.util.Locale; import java.util.UUID; import javax.servlet.http.HttpSession; import com.sun.org.apache.regexp.internal.RE; import org.springframew

Spring Boot 揭秘与实战(七) 实用技术篇 - FreeMarker 模板引擎

文章目录 1. FreeMaker 代替 JSP 作为页面渲染 2. 生成静态文件 3. 扩展阅读 4. 源代码 Spring Boot 提供了很多模板引擎的支持,例如 FreeMarker.Thymeleaf.这篇,我们看下 Spring Boot 如何集成和使用 FreeMarker. Spring Boot 中使用 FreeMarker 模板非常简单方便.如果想要使用FreeMarker 模板引擎,首先,修改 POM 文件,添加依赖. FreeMaker 代替 JSP 作为页面渲染 <de

Java之利用Freemarker模板引擎实现代码生成器,提高效率

http://blog.csdn.net/huangwenyi1010/article/details/71249258 目录(?)[-] 开心一笑 视频教程 提出问题 解决问题 前言 技术选型 实现思路 首先假如在数据库中有一张表 ay_test 我们首先要获取数据库的连接这里我只贴出相关的代码 获取数据库表的元数据 最后根据元数据获取表字段注释等等生成相关的文件 代码实现 Java代码实现 FreeMarkerTemplateUtils工具类 实体类 ColumnClass freemark

SpringBoot获取Freemarker模板引擎,生成HTML代码

今天用Ajax异步添加评论,加载Freemarker模板引擎,生成模板模块 1.新建Freemarker模板 <li id="${comment.oId}"> <div> <div class="avatar tooltipped tooltipped-n" aria-label="${comment.commentName}" style="background-image: url(${comment.

Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化

模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则.强大的功能.高效的渲染效率.详尽的帮助说明与不断的更新与维护.常见的前端模板引擎有: 常用的java后台模板引擎:jsp.FreeMarker.Velocity等. 请不要迷恋速度,为了推广的测试可能是片面的,好的模板引擎经得起时间考验,建议大家选择成熟的.常用的模板引擎.另外不管前后端的模板引擎

freemarker模板引擎 常用标签

freemarker正常生成HTML的模板引擎,公司需求将书籍来源的数据发放到不同的渠道,每个渠道生成特定的模板,这样数据自动生成相应的格式,主要是生成xml格式,所以根据网上的Demo改成了对应项目测试的Demo.--------------------此为背景. 正常的模板文件.flt的,但是发现改成.xml格式的也完全没有问题,我表示非常高兴,哇卡卡卡~ 网上有很多标签大全,我就捡我用过的标签写:(不断的补充ing...) 1.<#if></#if> <#elseif&

SpringMVC的架设,使用Freemarker模板引擎

自行编译完spring4.0后,要架设以Freemaker为模板引擎的网站,同时还要整合Hibernate3.6.这当然要用Spring的MVC架构.我希望是注解模式完成,经过几次查询和修改,终于架设完成,现记录一下,以备后面使用. 准备工作:自行编译Spring4,也可以网上下载已经编译好的包:下载Hibernate3.6:下载各类依赖包,以下为我列出的各类依赖包: antlr-2.7.6.jar aopalliance-1.0.jar aspectj.jar c3p0-0.9.1.2.jar

FreeMarker模板引擎基础知识

FreeMarker基础简介 FreeMarker是一款模板引擎:一种基于模板,用来生成输出文本的通用工具.它是为java程序员提供的一个开发包或者说是库类,一般的用法就是Java程序通过SQL查询到数据,FreeMarker使用模板生成文件页面来显示已经准备好的数据.也就是 输出= 模板+数据模型. FreeMarker支持的数据类型有: 标量 字符串 数字 布尔值 日期 容器 哈希表 系列 集 子程序 方法和函数 用户自定义指令(比如宏) 其他 节点 模板(FTL编程)是由如下部分混合而成的

JavaScript模板引擎学习分享

为了将数据库中的一组记录转换成HTML输出到界面上,大家都采用哪些做法呢? 在WebForm时代我们经常使用datagrid.repeater,当MVC问世后我们开始直接在视图上编写C#循环语句,而现在我更喜欢使用JavaScript模板引擎来生成HTML.因为这种做法的最大好处是实现了前后端代码的解耦,前端开发人员也无需了解太多的C#知识. 用法与示例: 第一步,在页面中引入JavaScript模板引擎: function template(str, data) { var strFunc =