freemarker study

1,freemarker是一款模板引擎,一种基于模板的、用来生成输出文本的通用工具。类似模板引擎还有Velocity,Common Template等。

对于java web开发来说,使用FreeMarker模板,可以将java代码从页面中分离出来。开发人员只需关注业务逻辑代码,而由页面设计人员去设计显示效果,两类人员各司其职,发挥其擅长的一面。FreeMarker注释:类似HTML的注释,用<#–和-->来分隔的。任何介于这两个分隔符(包含分隔符本身)之间的内容会被FreeMarker忽略,不会执行或输出。

2,freemarker仅仅只是一个视图层组件,主要用于解析服务器端的数据,展示在视图层

3, list指令用来遍历集合中的内容下面是我看视频直接手敲的代码,便于加深印象

java代码片段

@controller
@requestMapping('/')
public class indexController{
	@requestMapping(value='/index')
	public ModelAndView index(){
		ModelAndView mv=new ModelAndView();
		mv.addObject('username','hello freemarker')
		mv.addObject('userList',this.prepareUserList())
	}
	//准备用户数据
	public List<User> prepareUserList(){
		list<user> list=new ArrayList<User>();
		for (int i = 0;i < 5;i++){
			User item =new User();
			item.setName("用户"+i)
			item.setBirthDay(new Date());
			item.add(item)
		}
		return list;
	}
}

html片段

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<!--freemarker解析语法-->
		<h1>${username!}</h1>
		<!--list遍历集合中的内容-->
		<ul>
			<#list userList as item>
				<li>名字:${item.username} 生日:${item.birthday?string('yyyy-mm-dd')}</li>
			</#list>
		</ul>
	</body>
</html>

4,指令

取值指令

//1,常用${var}语法进行取值,当变量未定义时,或值为null时,默认设置下FreeMarker会
//报错,可以用${val!}进行取值,这样当值不存在时,freemarker不会报错也不会取值
//2,对于包装对象的值,通过'点'语法:${User.name},取值时可以进行计算,赋值,
//3,转义html内容(富文本):${val?html}

assign指令

//assign指令用来定义一个变量并给其赋值,或者替换原有变量的值
//格式:
<#assign name=value [name1=value1...]>
<#assign name>capture this</#assign>
//栗子:
<#assign username="master">

include指令

使用include指令,我们可以在当前的模板中插入其他文件的内容。
//格式:
<#include "filepath">
//栗子:
<#include "/copyright_footer.html">
//被包含进来的文件,既可以是静态页,也可以是动态页(即ftl模板)。include指令会先将该文件内容包含进当前模板,
//然后再跟数据模型结合输出。

逻辑指令

//if else 
 <#if var==99>
 <h1>hi</h1>
 <#elseif &lt 99>
 <h1>hello</h1>
 <#else>
 <h1>哇达西</h1>
 </#if>
 //??表示元素是否存在
 <#if myList??>
	<#list myList as item>
		${item}
	<#list>
 </#if>
 <#assign var ='python'>
 <#if (var =='python'||var == 'java' && var.length==6)||var == 'javascript'>
  <font color='red'>python</font>
 <#if>

switch指令(也属于逻辑指令)

<#assign var =10>
<#switch>
	<#case 10>
	10<br/>
	<#break>
	<#case 100>
	100<br/>
	<#break>
	<#default>
	other
	<#break>
</#switch>

函数

<#assign a='hello'>
<#assign b='world'>
<font color='green'>${(a+b)?lower_case}<font>
<font color='green'>${(a+b)?upper_case}<font>
<font color='green'>${(a+b)?last_index_of('o')}<font>
<font color='green'>${(a+b)?replace('o','x')}<font>

自定义函数

<ul>
<#assign myList=[8,1,7,2,3,10,4,5,6]>
<#list sort_int_list(myList) as item>
	<li>名字:${item.username} 生日:${item.birthday?string('yyyy-mm-dd')}</li>
</#list>
</ul>

自定义指令

<ul>
    <@role user='123456' role='admin';result1,result2>
	<#if result1>
		<font color='red'>admin</font>
	</#if>
	<#list result2 as item>
		${item}
	</#list>
	<li></li>
	</@role>
</ul>

内建函数
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

栗子

//同JavaScript中的split。不说也知道
<#list 'a,b,cd,'?split(',') as item>
${item}
<#list>
//时间转化
<#assign var1='01/03/2017'?date('MM/dd/yyyy')>
<#assign var1='15:05:30'?time('HH/mm/ss')>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值