FreeMarker 指南(一) -【纯属整理】

Spring Boot 集成 FreeMarker 详解案例 SpringBoot 很方便的集成 FreeMarker ,DAO 数据库操作层依旧用的是 Mybatis,本文将会一步一步到来如何集成 FreeMarker 以及配置的详解:Springboot 那些事:系类文章:git clone 下载工程 springboot-learning-example ,项目地址见 GitHub – https://github.com/JeffLi1993/springboot-learning-example。下面开始运行工程步骤(Quick Start):1. 数据库准 阅读详情

学习整理,如有侵权,请Email 告之

1、快速入门

(1)模板 + 数据模型 = 输出

l        FreeMarker基于设计者和程序员是具有不同专业技能的不同个体的观念

l        他们是分工劳动的:设计者专注于表示——创建HTML文件、图片、Web页面的其它可视化方面;程序员创建系统,生成设计页面要显示的数据

l        经常会遇到的问题是:在Web页面(或其它类型的文档)中显示的信息在设计页面时是无效的,是基于动态数据的

l        在这里,你可以在HTML(或其它要输出的文本)中加入一些特定指令,FreeMarker会在输出页面给最终用户时,用适当的数据替代这些代码

l        下面是一个例子:

	
<html>
<head>
  <title>Welcome!</title>
</head>
<body>
  <h1>Welcome ${user}!</h1>
  <p>Our latest product:
  <a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>  

l        这个例子是在简单的HTML中加入了一些由${…}包围的特定代码,这些特定代码是FreeMarker的指令,而包含FreeMarker的指令的文件就称为模板(Template)

l        至于user、latestProduct.url和latestProduct.name来自于数据模型(data model)

l        数据模型由程序员编程来创建,向模板提供变化的信息,这些信息来自于数据库、文件,甚至于在程序中直接生成

l        模板设计者不关心数据从那儿来,只知道使用已经建立的数据模型

l        下面是一个可能的数据模型:

(root)
  |
  +- user = "Big Joe"
  |
  +- latestProduct
      |
      +- url = "products/greenmouse.html"
      |
      +- name = "green mouse"

l        数据模型类似于计算机的文件系统,latestProduct可以看作是目录,而user、url和name看作是文件,url和name文件位于latestProduct目录中(这只是一个比喻,实际并不存在)

l        当FreeMarker将上面的数据模型合并到模板中,就创建了下面的输出:

<html>
<head>
  <title>Welcome!</title>
</head>
<body>
  <h1>Welcome Big Joe!</h1>
  <p>Our latest product:
  <a href="products/greenmouse.html">green mouse</a>!
</body>
</html>  
(2)数据模型

l         典型的数据模型是树型结构,可以任意复杂和深层次,如下面的例子:

(root)
  |
  +- animals
  |   |
  |   +- mouse
  |   |   |   
  |   |   +- size = "small"
  |   |   |   
  |   |   +- price = 50
  |   |
  |   +- elephant
  |   |   |   
  |   |   +- size = "large"
  |   |   |   
  |   |   +- price = 5000
  |   |
  |   +- python
  |       |   
  |       +- size = "medium"
  |       |   
  |       +- price = 4999
  |
  +- test = "It is a test"
  |
  +- whatnot
      |
      +- because = "don't know"

l         类似于目录的变量称为hashes,包含保存下级变量的唯一的查询名字

l         类似于文件的变量称为scalars,保存单值

l         scalars保存的值有两种类型:字符串(用引号括起,可以是单引号或双引号)和数字(不要用引号将数字括起,这会作为字符串处理)

l         对scalars的访问从root开始,各部分用“.”分隔,如animals.mouse.price

l         另外一种变量是sequences,和hashes类似,只是不使用变量名字,而使用数字索引,如下面的例子:

(root)
  |
  +- animals
  |   |
  |   +- (1st)
  |   |   |
  |   |   +- name = "mouse"
  |   |   |
  |   |   +- size = "small"
  |   |   |
  |   |   +- price = 50
  |   |
  |   +- (2nd)
  |   |   |
  |   |   +- name = "elephant"
  |   |   |
  |   |   +- size = "large"
  |   |   |
  |   |   +- price = 5000
  |   |
  |   +- (3rd)
  |       |
  |       +- name = "python"
  |       |
  |       +- size = "medium"
  |       |
  |       +- price = 4999
  |
  +- whatnot
      |
      +- fruits
          |
          +- (1st) = "orange"
          |
          +- (2nd) = "banana"

l         这种对scalars的访问使用索引,如animals[0].name

(3)模板

l         在FreeMarker模板中可以包括下面三种特定部分:

Ø         ${…}:称为interpolations,FreeMarker会在输出时用实际值进行替代

Ø         FTL标记(FreeMarker模板语言标记):类似于HTML标记,为了与HTML标记区分,用#开始(有些以@开始,在后面叙述)

Ø         注释:包含在<#--和-->(而不是<!--和-->)之间

l         下面是一些使用指令的例子:

Ø         if指令

<#if animals.python.price < animals.elephant.price>
  Pythons are cheaper than elephants today.
<#else>
  Pythons are not cheaper than elephants today.
</#if>  


Ø         list指令

<p>We have these animals:
<table border=1>
  <tr><th>Name<th>Price
  <#list animals as being>
  <tr><td>${being.name}<td>${being.price} Euros
  </#list>
</table>  


输出为:

<p>We have these animals:
<table border=1>
  <tr><th>Name<th>Price
  <tr><td>mouse<td>50 Euros
  <tr><td>elephant<td>5000 Euros
  <tr><td>python<td>4999 Euros
</table>  


Ø         include指令

<html>
<head>
  <title>Test page</title>
</head>
<body>
  <h1>Test page</h1>
  <p>Blah blah...
<#include "/copyright_footer.html">
</body>
</html>  


Ø         一起使用指令

<p>We have these animals:
<table border=1>
  <tr><th>Name<th>Price
  <#list animals as being>
  <tr>
    <td>
      <#if being.size = "large"><b></#if>
      ${being.name}
      <#if being.size = "large"></b></#if>
    <td>${being.price} Euros
  </#list>
</table>  











freemarker ajax 请求json数据格式 联动下拉 漂亮的弹出框 提示框 freemarker ajax 请求json数据格式 联动下拉 漂亮的弹出框 提示框freemarker ajax 请求json数据格式 联动下拉 漂亮的弹出框 提示框freemarker ajax 请求json数据格式 联动下拉 漂亮的弹出框 提示框freemarker ajax 请求json数据格式 联动下拉 漂亮的弹出框 提示框freemarker ajax 请求json数据格式 联动下拉 漂亮的弹出框 提示框freemarker ajax 请求json数据格式 联动下拉 漂亮的弹出框 提示框 立即下载

相关推荐

HTML5-Ajax-Freemarker:通过HTML表示静态页面,Ajax和Freemarker做数据交互的一个动态小demo

HTML5-Ajax-Freemarker 通过HTML表示静态页面,Ajax和Freemarker做数据交互的一个动态小demo 总共两个项目 ajax这个文件夹是用户ajax作为网络请求的 在request.js文件中造的json数据,前部分直接获取对应DOM标签进行赋值,下面的根据json的数据结构在js中直接造标签内容进行添加,响应的css和js的样式和交互就那样 第二个freemarker是通过freemarker作为模板技术,先手写ftl文件作为模板,其中有数据交互的地方加上标签内容,然后通过java文件获取数据源(对象模型),同时通过FreemarkerUtil生成html文件,需要指定生成目录,这里我生成在桌面ftl文件夹中,可将freemarker直接拖到桌面(里面有响应的css文件和js文件),当然我这里的生成html文件路径是绝对路径,可以改为相对路径。其数据交互模式

第4讲 .Freemarker和ajax请求 Springboot

一:使用freemarker,页面请求 1.添加jar包,     打开eclipse, 打开项目的pom文件,Alt+/ 选择 搜索 Configuration Processer,和 Freemarker,并勾选, 选择ok,如图;或者 添加 如下:   &lt;dependency&gt; &lt;groupId&gt;org.springframewor...

Cruise的博客 6198

STM32进入HardFault_Handler时,如何找到问题所在?

当STM32进入HardFault_Handler时,定位问题发生的点

m0_60831979的博客 2150

SpringBoot:freemarker + jquery、ajax 实现局部刷新、表格分页

后端使用: SpringMVC + Mybatis + pageHelper分页插件; 前端使用:freemarker模版 、Jquery + ajax ; 效果展示: 核心要点 想要实现前端页面 局部刷新效果,首先在html中定义一个 div盒子,然后通过 ajax获取后端数据并使用jquery的empty()方法及append()方法将div中的数据清空并将新的数...

StarryaSky的博客 9573

用Python实现一个简单的远程桌面服务端和客户端

本文介绍了一个基于Python的轻量级远程桌面解决方案,针对商业软件在嵌入式系统上的兼容性问题、性能问题和成本问题。系统采用客户端-服务端架构,包含两个通信通道:5000端口传输压缩视频流,5001端口传输控制事件。通过多线程设计、图像压缩(JPEG+zlib)和网络优化(禁用Nagle算法)等技术手段提高性能。服务端实现了高效的屏幕捕获(使用mss库)、图像处理流水线和事件处理逻辑。客户端采用PyQt5构建UI界面,包含视频接收线程以减少主线程负担。该方案具有跨平台、开源免费、轻量级(核心代码不到500行

Hi20240217的博客 1660

PMOS过压保护电路设计与仿真优化策略

本文深入探讨PMOS过压保护电路(OVP)的设计与仿真优化策略,详细解析PMOS管选型、稳压管特性及三极管配置等关键要素。通过Proteus仿真案例揭示典型设计误区,并提供响应速度提升、抗干扰设计等进阶优化方案,助力工程师实现高可靠性的电源保护系统设计。

weixin_42620340的博客 440

jquery ajax freemarker标签实现异步分页

jquery pagination 官网:http://www.mricle.com/JqueryPagination

lipingping951462的专栏 6853

68页|大型车企集团数字化转型汽车数字化信息系统平台规划方案

这份PPT文档提供了一个全面的汽车集团数字化转型规划方案,涵盖了项目目标、规划思路、实施关注点、解决方案建议以及合作优势等多个方面。

baidu_25525561的博客 1328

freemarker ftl文件简单语法整理

freemarker ftl文件简单语法整理 应项目组要求修改PDF功能为word,这是使用freemarker,故将一些常用的语法整理进来 本文转载至 链接: freemarker 常见语法整理. 我的freemarker 整理使用教程及源码 链接: link. FreeMarker的插值有如下两种类型: 1.通用插值${expr}; 2.数字格式化插值:#{expr}或#{expr;forma...

jdycsdn的博客 1683

ESP32-C3入门教程 环境篇②——Windows开发环境准备

文章目录一、注意事项二、下载ESP-IDF工具安装器三、安装内容四、详细安装步骤报错处理 一、注意事项 请注意 ESP-IDF 和 ESP-IDF 工具的安装路径不能超过 90 个字符,安装路径过长可能会导致构建失败。 Python 或 ESP-IDF 的安装路径中一定不能包含空格或括号。 除非操作系统配置为支持 Unicode UTF-8,否则 Python 或 ESP-IDF 的安装路径中也不能包括特殊字符(非 ASCII 码字符、中文字符) 二、下载ESP-IDF工具安装器 ESP-IDF Win

5244

Python爬虫实战:实时监控美国SEC官网文件更新,助你第一时间掌握市场动态

在资本市场中,信息就是财富。美国证券交易委员会(SEC)官网公开了大量公司披露文件,涵盖财报、招股说明书、内幕交易等重要信息。对投资者、分析师及法律合规人员来说,实时监控这些公开文件具有重要价值。

2201_76125261的博客 594

FreeMarker概述 - 纯属整理

学习整理,如有侵权,请Email 告之 |   FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 l         FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 l         虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面

趙大叔 543

若依开源系统多数据源整合clickhouse数据库详细步骤

若依开源系统多数据源整合clickhouse数据库详细步骤

java之书-资源 897

FreeMarker 指南(二) -【纯属整理】

学习整理,如有侵权,请Email 告之 3、模板 (1)整体结构 l         模板使用FTL(FreeMarker模板语言)编写,是下面各部分的一个组合: Ø         文本:直接输出 Ø         Interpolation:由${和},或#{和}来限定,计算值替代输出 Ø         FTL标记:FreeMarker指令,和HTML标记类

趙大叔 651

华为OD机试真题 新系统2026-04-01 C语言 实现【计算数列位置N的值】

1、输入M、N两个数,则按照以下规则形成一个数列; 2、数列的前M个元素的值为1到M; 3、从M+1个元素开始,计算的逻辑为: 如果其前面的M个元素中,存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之如果其前面的M个元素中,不存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之差;

MISAYAONE的博客 589

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

FreeMarker 教程整理

Freemarker新手教程 http://blog.youkuaiyun.com/qq_23994787/article/details/77506980 FreeMarker教程整理 http://blog.youkuaiyun.com/freewindgo/article/details/52297936 史上最详细freemarker语法介绍及其入门教程实例 http://blog.csdn...

weixin_30888707的博客 277

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

FreeMarker设计指南(完整整理)

2007年03月12日 星期一 23:42 快速入门 (1)模板 + 数据模型 = 输出 FreeMarker基于设计者和程序员是具有不同专业

BEHINDLENS 1633

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

FreeMarker笔记整理

FreeMarkerFreeMarker环境搭建FreeMarker数据类型布尔型日期型数值型字符串类型字符串空值处理sequence类型(序列类型)hash类型FreeMarKer常用指令自定义变量的指令 assign逻辑判断指令 if elseif elselist指令自定义指令 macro占位置零nested导入指令import包含指令include案例FreeMarker页面静态化FreeMarker运算符FreeMarker学习资源 FreeMarker环境搭建 新建一个maven项目 在pom

qq_43524048的博客 604

Freemarker 教程(一)-模板开发手册

layout: post title: “Freemarker 教程(一)-模板开发手册” date: 2021-2-2 08:00:00 +0800 category: Java author: Java课代表 excerpt: 本文是Freemarker系列的第一篇,面向模板开发人员,主要介绍 FreeMarker 所使用的 FTL语法,了解 Freemarker 的基本概念 本文是Freemarker系列的第一篇,面向模板开发人员,主要介绍 FreeMarker 所使用的 FTL(FreeM.

【Java课代表】的博客 5756

Java FreeMarker导出word

FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

立刻有,不强求 4200

FreeMarker模板语言开发(整理版)

FreeMarker语言 FreeMarker语言概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图) ...

KamRoseLee的博客 2220

FreeMarker标签使用整理

FreeMarker标签使用整理

风过留痕 2847

FreeMarker教程整理

网上看了很多相关的资料,感觉乱乱的,现在整理一下,按照以下思路来学习,相信会轻松不少,转载资料已注明 一、先对Freemarker有个概念——摘自百度百科 1、FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开

风致岚珊的博客 3706

收藏:freemarker整理

【全文】 (1)解决输出中文乱码问题: freemarker乱码的原因: * 没有使用正确的编码格式读取模版文件,表现为模版中的中文为乱码 解决方法:在classpath上放置一个文件freemarker.properties,在里面写上模版文件的编码方式,比如 default_encoding=UTF-8 locale=z...

我的收藏夹 149

FreeMarker之概念介绍(一)

一个模板引擎,基于模板生成文本输出的通用工具

庞凡 坚定自己踏实走好每一步 3851
上一篇: FreeMarker概述 - 纯属整理
下一篇: FreeMarker 指南(二) -【纯属整理】
趙大叔
博客等级 码龄17年 34粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

趙大叔

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值