Freemarker


//网页静态化
        
        
// 作用是:减少从数据库访问 ,减少数据库的压力

//    原来前端要连接后端才能完成的页面,现在只用前端,不再连接后端就要完成页面的展示。
    只用CSS+html+JS(前端技术)完成整个网站。但是现在的市场静态化并不纯粹
    
// 生成静态化页面,然后部署Nginx是俄罗斯人开发的web服务器,Nginx只能处理静态化页面,并发量有5万;


**************************入门**************************
1.导入依赖
<dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.23</version>
    </dependency>
2.简单的Demo
    配置模板  xxx.htm 或者 xxx.ftl(这个没有提示信息)
    
    //页面
    ${name},你好。${message}
    
3.测试类
Configuration configuration=new Configuration(Configuration.getVersion());
//2.设置模板所在的目录
configuration.setDirectoryForTemplateLoading(new File("D:/pinyougou_work/freemarkerDemo/src/main/resources/"));
//3.设置字符集
configuration.setDefaultEncoding("utf-8");
//4.加载模板
Template template = configuration.getTemplate("test.ftl");
//5.创建数据模型
Map map=new HashMap();
map.put("name", "张三 ");
map.put("message", "欢迎来到神奇的品优购世界!");
//6.创建 Writer 对象
Writer out =new FileWriter(new File("d:\\test.html"));
//7.输出
template.process(map, out);
//8.关闭 Writer 对象
out.close();    
4.生成一个在d:\\test.html文件   
****************************************************

**************************知识点**************************    

1. FTL 指令**

//页面端
(一)assign 指令:

(1)定义简单类型:                            
    <#assign linkman="周先生">
        联系人:${linkman}
(2)定义对象类型:
<#assign info={"mobile":"13301231212",'address':'北京市昌平区王府街'} >
电话:${info.mobile} 地址:${info.address}    

(二)include 指令:  引入head.html
<#include "head.ftl">
    
 (三)if 指令    : Freemarker中 = 和 ==是一样的
 
 <#if success=true>
 你已通过实名认证
<#else>
 你未通过实名认证
</#if>
//后端:map.put("success", true);

(四)list 指令:goodsList是集合

<#list goodsList as goods>
 ${goods_index+1} 商品名称: ${goods.name} 价格:${goods.price}<br>
</#list>

2.内建函数**
--------------
 ${goodsList?size} : 获取goodsList集合的长度
--------------
<#assign text="{'bank':'工商银行','account':'10101920201920212'}" />  : 将一个将 json 字符串转换为对象 text可以是数组
<#assign data=text?eval />
开户行:${data.bank} 账号:${data.account}
--------------
日期格式化:
//后端添加
    map.put("today", new Date())
//前端显示
当前日期:${today?date} 
当前时间:${today?time} 
当前日期+时间:${today?datetime} 
日期格式化: ${today?string("yyyy 年 MM 月")}
--------------
数字转换为字符串:
map.put("point", 102920122); 如果页面 ${point} 则结果中 数字会有,分隔
                                    ${point?c}   则转换成字符串
                                    
***如果前端的对象 后端没有传值那么在Freemarker中会报错 我们用空值处理
方式一: 判断aaa是否有值
<#if aaa??>
 aaa 变量存在
<#else>
 aaa 变量不存在
</#if>    
方式二:  推荐使用,如果 aaa没有值则用 空字符串来替代
${aaa!'-'}        

***************************运算符*************************
1.7.1 算数运算符
FreeMarker 表达式中完全支持算术运算,FreeMarker 支持的算术运算符包括:+, - , * , / , %
1.7.2 逻辑运算符
逻辑运算符有如下几个:
逻辑与:&&
逻辑或:||
逻辑非:!
逻辑运算符只能作用于布尔值,否则将产生错误
1.7.3 比较运算符
表达式中支持的比较运算符有如下几个:
1 =或者==:判断两个值是否相等.
2 !=:判断两个值是否不等.
3 >或者 gt:判断左边值是否大于右边值
4 >=或者 gte:判断左边值是否大于等于右边值
5 <或者 lt:判断左边值是否小于右边值
6 <=或者 lte:判断左边值是否小于等于右边值                        

注意: =和!=可以用于字符串,数值和日期来比较是否相等,但=和!=两边必须是相同类型的值,
否则会产生错误,而且 FreeMarker 是精确比较,"x","x ","X"是不等的.其它的运行符可以作用于
数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替>会有更好的效果,
因为 FreeMarker 会把>解释成 FTL 标签的结束字符,当然,也可以使用括号来避免这种情况,
如:<#if (x>y)>
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值