FreeMarker(三)简单使用-程序员宅基地

FreeMarker(三)简单使用

  FreeMarker(三)简单使用

  本文将使用上篇文章的第二种方式编写实例:

  准备:freemarker.jar,Test.class,template.html(放在项目下的template文件夹下)

  template.html

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Freemarker模板</title>
</head>
<body>
    描述:<b>${description}</b></br>
    集合大小:<b>${nameList?size}</b></br>
    迭代list集合:</br>
    <#list nameList as names>
        这是第${names_index+1}个人,叫做:<label style="color:red">${names}</label>
        <#if (names=="张三")>
            他的武器是:刀
            <#elseif (names=="李四")>
            他的武器是:叉
            <#else>
            他的武器是:剑
        </#if>
        </br>
    </#list>
    迭代map集合:  </br> 
    <#list testMap?keys as key>
        key--->${key} &nbsp;&nbsp;&nbsp;&nbsp;value--->${testMap[key]!("null")}</br>
        <#--  fremarker 不支持null, 可以用! 来代替为空的值。其实也可以给一个默认值 
         value-----${weaponMap[key]?default("null")}还可以 在输出前判断是否为null --> 
    </#list>
</body>
</html>

 

 Test.java

public class Test {
    public static void main(String[] args) throws IOException {
    try {
        Configuration config = new Configuration(new Version(2, 3, 22));
        System.out.println(System.getProperty("user.dir"));
        config.setDirectoryForTemplateLoading(new File(System.getProperty("user.dir")+"/template"));
        config.setDefaultEncoding("UTF-8");
        Template template = config.getTemplate("template.html");
        Map<String, Object> paramMap = new HashMap<String, Object>();
        paramMap.put("description", "我正在学习使用Freemarker生成静态文件!");
        List<String> nameList = new ArrayList<String>();
        nameList.add("张三");
        nameList.add("李四");
        nameList.add("王五");
        nameList.add("马六");
        paramMap.put("nameList", nameList);

        Map<String, Object> testMap = new HashMap<String, Object>();
        testMap.put("first", "轩辕剑");
        testMap.put("second", "崆峒印");
        testMap.put("third", "女娲石");
        testMap.put("fourth", "神农鼎");
        testMap.put("fifth", "伏羲琴");
        testMap.put("sixth", "昆仑镜");
        testMap.put("seventh", null);
        paramMap.put("testMap", testMap);
        Writer writer = new OutputStreamWriter(new FileOutputStream("success.html"), "UTF-8");
        template.process(paramMap, writer);
        System.out.println("恭喜,生成成功~~");
    } catch (TemplateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
}

生成的success.html

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Freemarker模板</title>
</head>
<body>
    描述:<b>我正在学习使用Freemarker生成静态文件!</b></br>
    集合大小:<b>4</b></br>
    迭代list集合:</br>
        这是第1个人,叫做:<label style="color:red">张三</label>
            他的武器是:刀
        </br>
        这是第2个人,叫做:<label style="color:red">李四</label>
            他的武器是:叉
        </br>
        这是第3个人,叫做:<label style="color:red">王五</label>
            他的武器是:剑
        </br>
        这是第4个人,叫做:<label style="color:red">马六</label>
            他的武器是:剑
        </br>
    迭代map集合:  </br> 
        key--->fourth &nbsp;&nbsp;&nbsp;&nbsp;value--->神农鼎</br>
        key--->fifth &nbsp;&nbsp;&nbsp;&nbsp;value--->伏羲琴</br>
        key--->second &nbsp;&nbsp;&nbsp;&nbsp;value--->崆峒印</br>
        key--->sixth &nbsp;&nbsp;&nbsp;&nbsp;value--->昆仑镜</br>
        key--->seventh &nbsp;&nbsp;&nbsp;&nbsp;value--->null</br>
        key--->third &nbsp;&nbsp;&nbsp;&nbsp;value--->女娲石</br>
        key--->first &nbsp;&nbsp;&nbsp;&nbsp;value--->轩辕剑</br>
</body>
</html>

效果预览

 

本文参考网络资源!

 

转载于:https://www.cnblogs.com/maxudong/p/8274831.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30448685/article/details/95241441

智能推荐

使用docker搭建XSS漏洞靶场_xshell靶场搭建命令-程序员宅基地

文章浏览阅读1.5k次。在docker中搭建xss漏洞靶场首先用Xshell连上自己的虚拟机# 安装docker-composepip install docker-compose# 下载vulstudy项目 如果失败了请往下看git clone https://github.com/c0ny1/vulstudy.git下图是红字是说python版本需要3.5以上,而本机的是2.7.5黄字警告是说pip版本低,但是还可以用,不管它就是了使用docker-compose部署容器安装镜像(快速版)因为GitH_xshell靶场搭建命令

/etc/passwd文件和/etc/shadow文件_/etc/shadow $6-程序员宅基地

文章浏览阅读2.2k次。在Linux系统中的账户,密码被存放在两个文件中:/etc/passwd和/etc/shadow。/etc/passwd文件上图就是etc/passwd文件中的内容。可以观察到,其中每一行的内容从格式上来看都是一致的。其实,每一行都代表一个帐号,比如上图中的第一行root账号,第二行daemon账号,第三行bin账号,......。这个文件中除了保存root账号,普通用户的账号之外,还保存了系统正常运行所需要的一些账号,比如daemon,bin,sys等系统账号。既然每一行的形式都是一样的._/etc/shadow $6

C语言:找到数组中出现次数最多的元素_数组元素出现次数最多-程序员宅基地

文章浏览阅读683次。找到数组中出现次数最多的元素_数组元素出现次数最多

hibernate级联删除2000条数据速度慢_用数据解读火爆的咪蒙-程序员宅基地

文章浏览阅读88次。此为公众号数据分析第三篇,前两篇见乐了:公众号数据分析系列之-caoz的梦呓​zhuanlan.zhihu.com乐了:公众号数据分析系列之-占豪​zhuanlan.zhihu.com这次要分析的号是最近一两天又被炒上天的“咪蒙”。 嗯,就是那个篇篇10W+的咪蒙。分析理由:最近特火爆(其实一直很火爆),别人多从内容方面去分析,我就提供点数据分析的佐料吧。至于他最近有多火微信指数最直观了。分析文..._级联删除速度很慢

MySQL-锁表和解锁_mysql锁表和解锁语句-程序员宅基地

文章浏览阅读1.2w次,点赞12次,收藏51次。介绍锁是计算机协调多个进程或线程并发访问某一资源的机制。锁保证数据并发访问的一致性、有效性;锁冲突也是影响数据库并发访问性能的一个重要因素。锁是Mysql在服务器层和存储引擎层的的并发控制。加锁是消耗资源的,锁的各种操作,包括获得锁、检测锁是否是否已解除、释放锁等。锁机制共享锁与排他锁共享锁(读锁):其他事务可以读,但不能写。排他锁(写锁) :其他事务不能读取,也不能写。粒度锁MySQL 不同的存储引擎支持不同的锁机制,所有的存储引擎都以自己的方式显现了锁机制,服务器层完全不了解存储引擎中的_mysql锁表和解锁语句

Zotero | 如何在参考文献中插入一段解释性文字_zotero怎么添加注释-程序员宅基地

文章浏览阅读1.1k次。使用Zotero作为Word中的一个插件,可以很方便地按照所需的参考文献格式来插入。但是有时候我们我们在写中文期刊论文的时候需要给出一段话的解释,这是并不需要作者、年份、期刊等论文,这个时候应该怎么插入进去呢?_zotero怎么添加注释

随便推点

嵌入式内核及驱动开发(初级)_嵌入式内核开发-程序员宅基地

文章浏览阅读1.1k次,点赞3次,收藏14次。提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档**嵌入式内核及驱动开发(初级)**文章目录嵌入式内核及驱动开发(初级)一、设备环境的搭建二、驱动开发![在这里插入图片描述](https://img-blog.csdnimg.cn/20210614165916608.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ_嵌入式内核开发

idea中debug按钮灰化如何解决_idea debug按钮灰色-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏13次。在idea中启动/debug按钮呈灰化状态解决教程_idea debug按钮灰色

docker 里使用pm2守护多个进程和日志记录使用pm2-logrotate_pm2-runtime-程序员宅基地

文章浏览阅读1.9k次。docker 里使用pm2守护多个进程和日志记录使用pm2-logrotate_pm2-runtime

基于Live555实现RtspServer及高清高码率视频传输优化-程序员宅基地

文章浏览阅读312次。基于Live555实现RtspServer及高清高码率视频传输优化_live555

安信可LoRaWAN网关 RG-02 接入TTN平台,控制多节点LoRaWAN模组。-程序员宅基地

文章浏览阅读2.9k次,点赞2次,收藏8次。本文章将说明如何使用安信可RG-02网关对接TTN平台,实现数据发送与接收。_ttn平台

【51单片机】十分钟学会定时器&中断¹_51单片机定时器-程序员宅基地

文章浏览阅读3.7w次,点赞359次,收藏1.3k次。51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部进行完成的。这个其实就是我们前面之前玩的那些硬件就是,比如说独立按键以及数码管和LCD1602 的这些硬件实际上都是单片机的IO口进行控制的一个外设,就像我们单片机都是实实在在的设备。但是我们这个定时器呢?虽说也是一个实在的电路,但这个电路都是在 MCU 单片机的电路内部进行完成的。就是说我们这个单片机 STC89C52 芯片给拿走。而光有这个单片机就可以实现定时器的这个功能,这个定时器就是属于单片机的一个内部资源。.........._51单片机定时器

推荐文章

热门文章

相关标签