- 浏览: 309401 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
di1984HIT:
不错,不错。
Jquery.LazyLoad.js插件修正版下载,实现图片延迟加载特效 -
fncj:
好东西,
freemarker常用技巧 -
xwy55555:
说得很清楚
大型网站框架的演变 -
gxz1989611:
这个东西好,我转载了~~
40 个轻量级 JavaScript 库 -
gxz1989611:
恩,这个标题真是考虑到了SEO啊!!!
这才是真正的JQuery.ajax传递中文参数的解决方法
1. freemarker 简介
1.1. 概述
FreeMarker 允许 Java servlet 保持图形设计同应用程序逻辑的分离,这是通过在模板中密封 HTML 完成的。模板用 servlet 提供的数据动态地生成 HTML 。模板语言是强大的直观的,编译器速度快,输出接近静态 HTML 页面的速度。
FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写
FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序
虽然 FreeMarker 具有一些编程的能力,但通常由 Java 程序准备要显示的数据,由 FreeMarker 生成页面,通过模板显示准备的数据
FreeMarker 不是一个 Web 应用框架,而适合作为 Web 应用框架一个组件
FreeMarker 与容器无关,因为它并不知道 HTTP 或 Servlet ; FreeMarker 同样可以应用于非 Web 应用程序环境
FreeMarker 更适合作为 Model2 框架(如 Struts )的视图组件,你也可以在模板中使用 JSP 标记库。
2. freemarker 常用技巧
2.1. 截取字符串
有的时候我们在页面中不需要显示那么长的字符串,比如新闻标题,这样用下面的列子就可以自定义显示的长度
< lt . <= lte. > gt. >= gte
<#if jstbqkVO.gzdd?length lt 8>
<a
href>${jstbqkVO.gzdd?default("")}</a>
<#else>
<a href
title="${jstbqkVO.gzdd}">${jstbqkVO.gzdd[0..3]?default("")}...</a>
</#if>
意思就是如果这个字符串的长度小于 8 ,那么就正常显示,反之则取 4 位
2.2. 连接字符串
${"Hello," + user + "!"} // 输出结果为 :hello,gs!
2.3. 日期格式和 boolean 类型,转化为 string 类型
例子 1:
${.now?string("yyyy-MM-dd HH:mm:ss zzzz")}
${.now?string("EEE,MMM d, ''yy")}
${.now?string("EEEE,MMM dd,yyyy, hh:mm:ss a '('zzz')'")}
输出结果如下 :
2003-04-08 21:24:44 Pacific Daylight Time
Tue,Apr 8,'03
Tuesday,April 08,2003,09:24:44 PM (PDT)
例子 2:
<#assign foo=true/>
${foo?string("yes","no")} // 输出结果 :yes
2.4. 排序:
1. 升序 .sort_by()
<#list list?sort_by("
字段
") as x>
</#list>
2. 降序 .sort_by()?reverse
<#list list?sort_by("
字段
")?reverse as x>
</#list>
2.5. 去空格:
${xx?trim}
2.6. 数值精度控制
mX: 小数部分最小 X 位。
MX: 小数部分最大 X 位。
例子 :
<#assign x=2.582/>
<#assign y=4/>
#{x; M2} //2.58
#{y; M2} //4
#{x; m1M2} //2.58
#{y; m1M2} //4.0
2.7. 特殊字符串的转义
\": 双引号
\\: 反斜杠
\r: 回车
\b: 退格键
\': 单引号
\n: 换行
\t:Tab
\f:Form feed
\l:<
\g:>
\a:&
\{:{
\xCode: 直接通过 4 位的十六进制数来指定 Unicode 码 , 输出改 Unicode 对应的字符。
2.8. 顶层变量
* 所谓顶层变量就是直接放在数据模型中的值。
Map root = new HashMap();
root.put("name","yeeku"); //name 是一个顶层对象
* 对于顶层变量 , 直接使用 ${variableName} 来输出变量值
2.9. 集合连接运算符
* 集合连接运算是将两个集合连接成一个新的集合 , 连接集合的运算符是 '+'.
<#list [" 一 "," 二 "," 三 "] + [" 四 "," 五 "," 六 "] as x>
${x}
</#list>
// 输出结果如下 :
一二三四五六
2.10. 算术运算符
* 取整运算
<#assign x=5>
${(x/2)?>int} //2
${1.1?int} //1
${1.999?int} //1
${-1.1?int} //-1
2.11. 比较运算符
=(==) : 判断两个值是否相等
!= :............ 不相等
>(gt) : 判断左边是否大于右边
>=(gte) :.....
<(lt) :.....
<=(lte) :.....
2.12. 逻辑运算符
* 逻辑运算符只能作用于布尔值 , 否则将产生错误 .
逻辑与 :&&
逻辑或 :||
逻辑非 :!
2.13. 内置函数
html:
字符串中所有的特殊
HTML
字符都需要用实体引用来代替(比如
<
代替
<
)
cap_first:
字符串的第一个字母变为大写形式
lower_case:
字符串的小写形式
upper_case:
字符串的大写形式
trim:
去掉字符串首尾的空格
序列使用的内建函数:
size
:序列中元素的个数
数字使用的内建函数:
int:
数字的整数部分(比如
-1.9?int
就是
-1
)
9>.
空值运算符
length: 字符串的长度
string : 把其他格式的数据,转化为 string 类型
例:
${test?html}
${test?upper_case?html}
假设字符串 test 存储 ”Tom & Jerry” ,那么输出为:
Tom & Jerry
TOM & JERRY
${seasons?size}
${seasons[1]?cap_first}
${"horse"?cap_first}
假设 seasons 存储了序列 "winter", "spring", "summer", "autumn" ,那么上面的输出将会是:
4
Spring
Horse
2.14. 运算符优先级
* 推荐使用括号来决定运算优先级 .
1>. 一元运算符 : !
2>. 内建函数 : ?
3>. 乘除法 : *,/,%
4>. 加减法 : +,-
5>. 比较 : <,>,<=,>=(lt,lte,gt,gte)
6>. 相等 : ==(=),!=
7>. 逻辑与 : &&
8>. 逻辑或 : ||
9>. 数字范围 : ..
2.15. freemarker 判断返回值是否为空, null 的方法
对于
null
,或者
miss value
,
freemarker
会报错
!
:
default value operator
,语法结构为:
unsafe_expr!default_expr
,比如
${mouse!"No mouse."}
当
mouse
不存在时,返回
default value
;
(product.color)!"red"
这种方式,能够处理
product
或者
color
为
miss value
的情况;
而
product.color!"red"
将只处理
color
为
miss value
的情况
??: Missing value test operator ,
测试是否为
missing
value
unsafe_expr??
:
product.color??
将只测试
color
是否为
null
(unsafe_expr)??
:
(product.color)??
将测试
product
和
color
是否存在
null
?exists:
旧版本的用法
比如:
<#if mouse??>
Mouse found
<#else>
No mouse found
</#if>
Creating mouse...
<#assign mouse = "Jerry">
<#if mouse??>
Mouse found
<#else>
No mouse found
</#if>
2.16. 在 ftl 中嵌入另一个 controller
<#assign c=JspTaglibs[ "http://java.sun.com/jsp/jstl/core" ] >
<@c.import url= "/product/hotlistByHttp.htm" />
3. FreeMarker 的 编写规范与定义
3.1. 编写的指令必须用小写字母
如 <#if></if> 类似这样的都必须小写标示
3.2. 编写的指令不允许嵌套
如 :
<#list>
<#if flag>…
</#list>
</#if>
这样是不正确的,会引起报错
3.3. 在指令中 ,${..} 只能用于文本部分
下面的代码是错误的:
<#if ${isBig}>Wow!</#if><#if "${isBig}">Wow!</#if>
应该写成:
<#if isBig>Wow!</#if>
3.4. 表达式的约定
字符串
使用单引号或双引号限定
如果包含特殊字符需要转义,如下面的例子:
${"It's \"quoted\" andthis is a backslash: \\"}
It's "quoted" andthis is a backslash: \
数字
直接输入,不需要引号
布尔值
true 和 false ,不使用引号
序列
由逗号分隔的子变量列表,由方括号限定,下面是一个例子:
<#list ["winter", "spring", "summer", "autumn"] as x>${x}</#list>
散列( hash )
由逗号分隔的键 / 值列表,由大括号限定,键和值之间用冒号分隔,下面是一个例子:
{"name":"green mouse", "price":150}
键和值都是表达式,但是键必须是字符串
3.5. 顶层变量的规范
顶层变量: ${variable} ,变量名只能是字母、数字、下划线、 $ 、 @ 和 # 的组合,且不能以数字开头
3.6. 操作符两边必须是数字
因此下面的代码是错误的:
${3 * "5"} <#-- WRONG! -->
发表评论
-
Kaptcha使用
2012-07-04 10:18 1898简单的装备起来很简单,网上一大把,就不说了。 ... -
kaptcha 验证码在spring mvc 中的使用
2012-07-04 10:11 2097... -
Java编程中“为了性能”尽量要做到的一些地方
2012-05-29 16:09 995下面是参考网络资源总结的一些在Java编程中尽可能要做到的 ... -
Spring邮件发送(可带附件,模板,群发,异步发送等功能)
2011-09-20 16:19 2387... -
Quartz
2011-09-14 16:35 1483博客 ... -
eclipse下启动tomcat出现Setting property 'source' to 'org.eclipse.jst.jee.server: '错误的
2011-06-08 16:08 3450在eclipse中启动tomcat时 ... -
Maven常用插件使用说明之deploy
2011-06-02 23:37 5341Maven的deploy插件用于把Maven自动构 ... -
Hudson+Maven+SVN 快速搭建持续集成环境
2011-06-01 10:35 1700hudson 是一个可扩展的持 ... -
struts2 中使用 chain Result 时 actionMessage 和 actionError 未复制的原因
2011-05-24 22:43 2187在网上查询N久,未解决。 一说必须使用 chain Res ... -
Quartz时间规则
2011-03-07 16:26 1978* * * * * ... -
Spring Quartz 任务调度
2011-03-07 16:07 1508关 ... -
可以设置你提交代码是必须写注释,可以规定长度至少为多少
2010-12-23 13:58 3791不少开发员提交修改的时候都不写注释,导致查看历史时很费劲,也不 ... -
Tomcat UTF-8 乱码问题解决办法
2010-12-20 16:13 2228关于java的乱码,一直是双字节字符环境开发者的问题,不同 ... -
eclipse中将java项目转换为web项目
2010-11-19 16:03 28541、进入项目目录,找到.project文件,打开。 2、 ... -
poi 新手教程
2010-10-28 15:10 1265poi 新手教程 Jakarta_POI 使用Ja ... -
Subversion Windows迁移到Linux服务器的步骤
2010-06-01 09:59 1477首先在Windows上,使用svnadmin dump res ... -
JAVA读写Properties文件
2009-04-30 21:05 3372JAVA读写Properties文件 ... -
Tomcat out of memory解决
2009-03-01 23:09 6870Tomcat 默认可以使用的内存为 128MB ,在较大型 ... -
Tomcat加入到系统服务中
2009-01-20 09:55 1494命令行使用sc命令.关于sc命令的详解,请自 ... -
web.xml的配置顺序
2008-12-30 14:31 1055filter,filter-mapping,listener, ...
相关推荐
#### FreeMarker常用技巧 1. **条件判断**:使用 `<#if>` 和 `<#else>` 结构来根据条件显示或隐藏内容。 2. **循环**:通过 `<#list>` 循环遍历集合或数组。 3. **自定义指令**:除了宏之外,还可以定义其他类型的...
### Freemarker语法完整版知识点详解 #### A....通过以上详细解释,读者可以更好地理解Freemarker的核心概念、指令用法以及一些常见的技巧和注意事项,从而更高效地使用Freemarker进行模板渲染工作。
### Freemarker 中文手册知识点详解 #### 一、Freemarker 概述 - **定义与功能**:Freemarker 是一款用纯 Java 编写的...通过上述知识点的介绍,希望能够帮助读者更好地理解和掌握 Freemarker 的基本概念和使用技巧。
SSM框架,全称为Spring、SpringMVC和MyBatis的组合,是Java Web开发中常用的三大组件。在这个"SSM框架freemarker的demo...通过学习和实践这个示例,开发者可以更好地理解和应用SSM框架,并掌握FreeMarker的使用技巧。
- **必要的XML处理**:常用XML处理技巧。 - **声明的XML处理**:高级XML处理技巧。 #### 五、参考文档 - **内建函数参考文档**:详细介绍FreeMarker提供的内置函数。 - **指令参考文档**:详细列出FreeMarker支持...
4. **Freemarker的常用技巧**: - 使用`?default`处理空值,如`${variable?default("default value")}`。 - `?string`转换为字符串,避免输出null。 - `?html`防止XSS攻击,自动转义特殊字符。 - `?eval`执行...
内建函数部分涵盖了处理字符串、数字、日期、布尔值、序列、哈希表和XML节点的内建函数,以及一些不常用或者专家级的内建函数。指令参考文档则包含了if、else、elseif、switch、case、default、break、list、include...
二、常用Freemarker标签 1. `${...}`:这是Freemarker的表达式标签,用于输出变量的值。例如`${user.name}`将输出用户对象的name属性。 2. `<#if ...>` 和 `<#else>`:条件判断语句,用来根据条件决定是否渲染某个块...
以下是一些基于JSP和Java的网页常用技巧,这些技巧涵盖了从优化性能到提升交互性等多个方面: 1. **使用JSP标签库**:JSTL(JavaServer Pages Standard Tag Library)和EL(Expression Language)能让你的代码更...
Freemarker是一个强大的Java模板引擎,它允许开发者将业务逻辑与视图层分离,使得HTML、XML等静态页面可以通过模板动态生成。以下是关于Freemarker语法...实际开发中,熟练掌握这些技巧将大大提高工作效率和代码质量。
Freemarker是一个强大的模板引擎,常用于Web应用中的视图层开发,特别是在Java环境中。...开发者可以通过阅读这些文档,掌握Freemarker的全部特性和使用技巧,从而更高效地开发出高性能的Web应用。
掌握常用的指令对于编写复杂模板非常重要。 3. **表达式**:表达式用于获取数据模型中的数据并将其插入到模板中。熟悉表达式的语法可以提高模板的灵活性和可维护性。 4. **插值**:即如何在模板中插入变量值的过程...
以上只是FreeMarker的一部分内容,实际使用中还需要根据具体需求学习和掌握更多特性和技巧。FreeMarker的灵活性和强大功能使其成为Java Web开发中不可或缺的一部分,熟练掌握它能帮助开发者更高效地构建动态网页。在...
SpringBoot是由Pivotal团队开发的,旨在简化Spring应用的初始搭建以及开发过程,它集成了大量常用的第三方库配置,如JPA、Thymeleaf、RabbitMQ等,极大地提高了开发效率。 本项目的核心知识点包括以下几个方面: 1...
Freemarker是一款强大的Java模板引擎,它允许开发者将HTML页面设计和业务逻辑分离,从而让开发者专注于业务逻辑的实现,而...通过实践和不断学习,开发者可以掌握Freemarker的高级技巧,提升Web应用的开发效率和质量。
总结,"springboot-integration-examples"是一个非常实用的学习资源,无论你是初识SpringBoot,还是希望进一步提升SpringBoot的使用技巧,都能从中受益匪浅。通过深入研究和实践,你将能够熟练掌握SpringBoot与各类...
Freemarker是Struts2常用的一个模板引擎,用于生成动态HTML或其他类型的输出。它是基于Java的,非Java代码的模板语言,允许开发者将视图与控制逻辑分离。freeMarker_total.rar可能包含了完整的Freemarker教程,包括...
3. "Struts+Hibernate+Spring集成开发宝典.pdf":这可能是一本详细指南,专注于SSH框架的集成,包含了从基础到高级的集成技巧和最佳实践。 4. "struts.hibernate.spring整合.pdf":这个PDF文件可能是关于如何整合...
其对于Spring Boot的最常用的第一个小程序、JavaConfig和常见注解、启动改变、热部署、Springboot整合Thymeleaf/freemarker/JSP、异常处理、配置文件、日志、国际化等都使用案例进行了说明,并且在最后通过一个贯穿...
本章节将详细介绍Freemaker的基础概念、核心指令以及一些实用技巧,帮助开发者更好地理解和应用这一工具。 #### 二、核心概念与指令 ##### 1. 核心概念 - **Sequence (序列)**:对应于Java中的List或数组等非键值...