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", );
root.put("b2", true);
root.put("date1", new Date());
root.put("random", new Random().nextInt());
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[].city},
${lst[].city},
${lst[].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 >
良好!
<#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= cellspacing= cellpadding=><tr><td>
<#nested>
</td></tr></table>
</#macro>
<@border >表格中的内容!</@border>
-------------------------------------------------------
测试命名空间:
<#import "b.ftl" as bb />
<@bb.copyright date="2010-2011" />
${bb.mail}
<#assign mail="my@163.com" />
${mail}
<#assign mail="my@163.com" in bb />
${bb.mail}
Freemarker与普通java的更多相关文章
- Freemarker + xml 实现Java导出word
前言 最近做了一个调查问卷导出的功能,需求是将维护的题目,答案,导出成word,参考了几种方案之后,选择功能强大的freemarker+固定格式之后的wordxml实现导出功能.导出word的代码是可 ...
- freemarker模板跟java代码放在一起
在配置 freemarkerConfig时加上 <property name="templateLoaderPath" value="classpath:hello ...
- Java模板引擎 FreeMarker
@(编程) [TOC] 1. 简介 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写.它是为Java程序员提供的一个开发包.它不是面向最终用户的,而是为程序员 ...
- 【java】Freemarker 动态生成word(带图片表格)
1.添加freemarker.jar 到java项目. 2.新建word文档. 3.将文档另存为xml 格式. 4.将xml格式化后打开编辑(最好用notepad,有格式),找到需要替换的内容,将内容 ...
- Java: FreeMarker的配置和使用
初学什么都不可以忽略的地方就是这个东西的官方网站:http://freemarker.org/.下载或者API都可以参考这里. FreeMarker是什么 非常的简单明了.FreeMarker是一个j ...
- FreeMarker调用Java静态方法以及静态变量的方法
这里介绍下在类似 Spring+FreeMarker 的架构中如何在FreeMarker中访问Java中的静态方法以及静态变量. 一.首先为了方便以及可复用我们创建一个工具类 /** * FreeMa ...
- [Freemarker] 在Java中简单实现对Freemarker的引用
Demo目录结构 ├─src │ ├─main │ │ ├─java │ │ │ └─demo │ │ │ └─freemarker │ │ │ ├─main │ │ │ │ Test.java │ ...
- Java使用freemarker导出word文档
通过freemarker,以及JAVA,导出word文档. 共分为三步: 第一步:创建模板文件 第二步:通过JAVA创建返回值. 第三步:执行 分别介绍如下: 第一步: 首先创建word文档,按照想要 ...
- Java Freemarker生成word
Java Freemarker生成word freeMaker 简介: FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代 ...
随机推荐
- thinkphp怎么设置输入网址直接进入首页
1.设置apache服务器的时候,文件的位置要写包含index.php的那个主文件夹. 2.apache和thinkphp默认index.html是作为网站的默认首页,所以在浏览器端可以直接输入网址进 ...
- 【linux草鞋应用编程系列】_1_ 开篇_系统调用IO接口与标准IO接口
最近学习linux系统下的应用编程,参考书籍是那本称为神书的<Unix环境高级编程>,个人感觉神书不是写给草鞋看的,而是 写给大神看的,如果没有一定的基础那么看这本书可能会感到有些头重脚轻 ...
- OData V4 系列 Ajax请求 CRUD
OData 学习目录 上一篇已经完成了服务创建,本篇主要介绍如何通过Ajax请求Odata服务,OData操作主要有 Get.Post.Patch.Put.Delete等操作. Post 操作 p ...
- 实现bootstrap布局的input输入框中的图标点击功能
使用bootstrap布局可以在input的输入框中添加譬如登录名输入框中的一键清除图标和密码输入框中显示密码的小眼睛图标.如下图: 但是在将图标放入input输入框中,这些小图标是无法获得点击事件的 ...
- JAVA动态代理模式(从现实生活角度理解代码原理)
所谓动态代理,即通过代理类:Proxy的代理,接口和实现类之间可以不直接发生联系,而可以在运行期(Runtime)实现动态关联. java动态代理主要是使用java.lang.reflect包中的两个 ...
- Project、Target、Workspace and Scheme
前言 今天有人问我Target和Project是什么关系?额...学习iOS开发都知道Target和Project的关系.这里我就简单的做了一个总结,而且加入的Scheme和Workspace.如果不 ...
- iOS之深拷贝与浅拷贝
在最开始,我们需要清楚一些关于内存分配方式的基础知识. 一般来说分为栈.堆.静态变量存储区.全局变量存储区.代码区. 前两个大家都懂的.通常将后三个合并称之为静态存储区,存储的是一些全局变量.静态变量 ...
- OC 面试问题汇总
OC 问题汇总: 1. 你如何理解 iOS 内存管理 1. new alloc copy retain这些对象我们都要主动的release或者 autorelease 2. 如果是类方法创建的 ...
- yii2下拉框带搜索功能
简单的小功能,但是用起来还是蛮爽的.分享出来让更多的人有更快的开发效率,开开心心快乐编程.作者:白狼 出处:http://www.manks.top/yii2_dropdown_search.html ...
- 八爪鱼招标网的百度权重升为2了,独立IP也从0快速发展为1000
自八爪鱼招标网上线以来,本着以客户一切利益为出发点,坚持提供国内首个免费招标信息平台为目标,经过各位同事不断地努力,不断收集客户各种各样的招标.采购实际需求,与政府.事业单位及中小型企业一对一的沟 ...