Freemarker与普通java

package com.sxt.test.freemarker;

import java.io.File;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

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

public class Test1 {
public static void main(String[] args) throws Exception {
//创建Freemarker配置实例
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File("templates")); 

//创建数据模型
Map<String, Object> root = new HashMap<String, Object>();
root.put("user", "测试用户");

//javabean可以自动转化!类似于我们前面学习的EL表达式!
User u = new User();
u.setUname("小红");
root.put("user1", u);
User u2 = new User("小明",new Address("中国","北京"));
root.put("user2", u2);

//map/list容器
List<Address> list = new ArrayList<Address>();
list.add(new Address("中国","北京"));
list.add(new Address("中国","上海"));
list.add(new Address("美国","纽约"));
root.put("lst", list);

//普通标量??
root.put("num0", 18);
root.put("b2", true);
root.put("date1", new Date());
root.put("random", new Random().nextInt(100));
root.put("htm2", "<b>粗体</b>");

//加载模板文件
Template t1 = cfg.getTemplate("a.ftl");

//显示生成的数据
Writer out = new OutputStreamWriter(System.out);
t1.process(root, out);
out.flush();

}
}

2./templates/a.ftl

普通标量测试:
<#if num0==18>18岁,成年了!</#if><#--数字 -->
<#if user=="测试用户">欢迎你</#if><#--字符串-->
<#if b2>b2是true!</#if>  <#--布尔值-->
${date1?string("yyyy-MM-dd HH:mm:ss")}
<#-- ${date1.toString()}????时间怎么处理??  -->
-----------------------------------------------
普通变量和javabean测试:
你好啊,${user},${user1.uname},今天你的精神不错!
${user2.uname}来自${user2.addr.city},那里好玩吗?
-----------------------------------------------
List数据测试:
${lst[0].city},
${lst[1].city},
${lst[2].city},
------------------------------------------------
内建函数:
${htm2?html}
-------------------------------------------------
测试空值处理:
<#-- ${sss} 没有定义这个变量,会报异常! -->
${sss!} <#--没有定义这个变量,默认值是空字符串! -->
${sss!"abc"} <#--没有定义这个变量,默认值是字符串abc! -->
------------------------------------------------
if语句测试:
${user}是<#if user=="老师">我们的老师</#if>
------------------------------------------------
if else 语句测试:
<#if num0 gt 18>  <#--不是使用>,大部分时候,freemarker会把>解释成标签结束! -->
    及格!
<#else>
    不及格!
</#if>
---------------------------------------------------
if else if else语句测试:
<#if random gte 90>
    优秀!
<#elseif random gte 80>
    良好!
<#else>
    一般!
</#if>
----------------------------------------------------
测试list指令:
<#list lst as dizhi >
    <b>dizhi</b> <br/>
</#list>
----------------------------------------------------
测试include指令:
<#include "included.txt" />
----------------------------------------------------
<#macro m1>   <#--定义指令m1 -->
    <b>aaabbbccc</b>
    <b>dddeeefff</b>
</#macro>

<@m1 /><@m1 />  <#--调用上面的宏指令 -->
------------------------------------------------------
<#macro m2 a b c >
    ${a}--${b}--${c}
</#macro>
<@m2 a="测试1" b="测试2" c="测试3" />
----------------------------------------------------
<#macro border>
  <table border=4 cellspacing=0 cellpadding=4><tr><td>
    <#nested>
  </td></tr></table>
</#macro>
<@border >表格中的内容!</@border>
-------------------------------------------------------
测试命名空间:
<#import "b.ftl" as bb  />
<@bb.copyright date="2010-2011" />
${bb.mail}
<#assign mail="[email protected]"  />
${mail}
<#assign mail="[email protected]" in bb  />
${bb.mail}
时间: 2024-11-07 08:04:00

Freemarker与普通java的相关文章

Java模板引擎 FreeMarker

概念 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写. 它是为Java程序猿提供的一个开发包.它不是面向终于用户的,而是为程序猿提供的一款能够嵌入他们所开发产品的应用程序. 介绍 那么.FreeMarker是一款如何的工具呢?FreeMarker实际上是被设计用来生成HTML Web页面,尤其是通过实现了基于MVC模式的Java Servlet应用程序.使用MVC模式的动态页面的设计构思使得你能够将前端设计师从程序猿中分离出来.全部人各司其职,发挥其最

Java: FreeMarker的配置和使用

初学什么都不可以忽略的地方就是这个东西的官方网站:http://freemarker.org/.下载或者API都可以参考这里. FreeMarker是什么 非常的简单明了.FreeMarker是一个java包.实现了MVC模式,分离开发者和设计师.也就是分离html也java的代码. FreeMarker是如何工作的 这是官网的图.非常明确的说明了FreeMarker是如何运作的.首先需要有一个template模板,在那里就是一堆的html标签和一些专属FreeMarker的标签,这些标签之后会

FreeMarker中的日期时间处理

1. FreeMarker中的日期时间格式设置 FreeMarker中可以分别对date.time.datetime三种类型的日期时间设置格式,例如: config.setDateTimeFormat("yyyy-MM-dd HH:mm:ss"); config.setDateFormat("yyyy-MM-dd"); config.setTimeFormat("HH:mm:ss"); 当我们对一个页面变量使用 ?date ?time ?date

freemarker整理

1.FreeMarker模板的内建变量有如下几个: 1,stack:代表ValueStack本身,可通过如下方式来访问其中的变量"${stack.findString('ognl?expr')}" 2,action:代表刚刚执行过的Action实例 3,response:代表HpptServletResponse实例 4,res:代表HpptServletResponse实例 5,request:代表HpptServletRequest实例 6,req:代表HpptServletReq

Freemarker 常用指南(收藏)

1,截取字符串 有的时候我们在页面中不需要显示那么长的字符串,比如新闻标题,这样用下面的例子就可以自定义显示的长度 < lt. <= lte. > gt. >= gte <#if jstbqkVO.gzdd?length lt 8> <a href>${jstbqkVO.gzdd?default("")}</a> <#else> <a href title="${jstbqkVO.gzdd}&quo

利用freemarker 静态化网页

1.介绍-FreeMarker是什么 模板引擎:一种基于模板的.用来生成输出文本的通用工具 基于Java的开发包和类库 2.介绍-FreeMarker能做什么 MVC框架中的View层组件 Html页面静态化 代码生成工具 CMS模板引擎 页面栏目动态定制 3.介绍-为什么要用FreeMarker 程序逻辑(Java 程序)和页面设计(FreeMarker模板)分离 分层清晰,利于分工合作 主流Web框架良好的集成(struts2,springmvc) 简单易学.功能强大 免费开源 4.Free

Java开发学习工具资源强力推荐

公众号难道变成一个月一次更新吗? 其实我想天天更新的,无奈懒惰加上工作忙~哈哈. 不过主要是没有干货,也不想让大家看我发无聊的记事流水账. 今天给点干货,由于我是程序员,现阶段还很感兴趣,所以分享的内容也是关于程序的. 如果不感兴趣,或者不合适,对你们没什么价值可以取消关注哦~~~. 干货: 当我当程序员一年之后,发现我们写的代码其实就是金钱,不管是学习过程中还是项目开发中. 不管我们代码写得如何,或许多年以后你想如何找到你的项目呢?也许你想看看你当前青涩的漏洞百出的代码,但是或许都没有办法找到

freemarker程序开发

1.程序开发入门 1.1 创建配置实例 首先,你应该创建一个freemarker.template.Configuration的实例,然后调整它的设置.Configuration实例是存储FreeMarker应用级设置的核心部分.同时,它也处理创建和缓存预解析模板的工作.也许你只在应用(可能是servlet)生命周期的开始执行它一次: Configuration cfg = new Configuration();// 指定模板文件从何处加载的数据源,这里设置成一个文件目录.cfg.setDir

Java生成目录

Java生成目录 1.说明 推断目录是否存在,假设不存在就创建该目录.并打印其路径.假设存在,打印其路径 2.实现源代码 /** * @Title:BuildFolder.java * @Package:com.you.freemarker.model * @Description:创建目录 * @author:Youhaidong(游海东) * @date:2014-6-30 下午10:47:06 * @version V1.0 */ package com.you.freemarker.mo