凌动小生的Blog

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

输出指令

${}过滤输出

输出表达式的计算结果,并进行过滤,比如:过滤变量中的HTML标签。

格式:
${expression}
 
示例:
${user.name}

 

注:HTTL缺省开启了EscapeXmlFilter,以防止HTML注入攻击,参见:安全示例。如果你需要更强的过滤,请自行实现Filter,并配置到value.filters。此处为运行时热点,请注意性能。

如果输出变量的类型为Template,则缺省不过滤,比如:${include("foo.httl")}

$!{}不过滤输出

原样输出表达式的计算结果,不进行任何过滤,通常用于输出HTML片段。

格式:
$!{expression}
 
示例:
$!{body}

 

安全示例

HTTL能根椐变量所处的位置,智能使用不同的安全过滤器,比如:

<htmL>
 
<!-- 这里会将html变量中的引号转成&quot; -->
<input value="${html}" />
 
<script type="text/javascript">
// 这里会将js变量中的引号转成\",而不是&quot;
var value ="${js}";
</script>
 
<style type="text/css">
.div {
    // 这里同样会将css变量中的引号转成\",而不是&quot;
    font-family:"${css}"
}
</style>

 

这一个多月以来,接触到的技术挺多,但仍有很多没有自主学到的知识,以后还会慢慢学习总结的。这次先说说velocity吧。

 velocity,是一个基于Java的模板引擎,它允许任何人仅仅简单的使用模板语言来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点。这是很好的一个地方,可以提高很多效率。下面来说下velocity的语法吧。

 

1.获取:

$!(var):如果有值则输出,如果为空,则不显示;

${var}:如果有值则输出,如果为空,则将该代码原样输出;

2.设置:

#set{$var=5}:设置var的值为5;

3. 判断:

#if{! $var}判断var为空

#elseif{$var}判断var不为空

#else{}
#end

4.循环:

循环数组或List时:

#foreach($var in list)

##输出当前迭代的次数

$velocityCount

${var}

#end

5.判断是否为null

1)使用 #ifnull() 或 #ifnotnull() 
   #ifnull ($foo) 
   要使用这个特性必须在velocity.properties文件中加入: 
userdirective = org.apache.velocity.tools.generic.directive.Ifnull 
userdirective = org.apache.velocity.tools.generic.directive.Ifnotnull 
2) 使用null工具判断 
   #if($null.isNull($foo)) 

posted on 2015-03-09 18:35  凌动小生  阅读(18806)  评论(0编辑  收藏  举报