##Freemarker模板引擎的分享

匿名 (未验证) 提交于 2019-12-03 00:13:02

网页静态化技术 -Freemarker


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

SEO

NginxwebNginx5Tomcat


FreeMarker Java FreeMarkerWeb Web Servlet HTTPXMLJSP 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>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!