0%

5.3 一般行为 5.3.1 out标签

5.3 一般行为

下面介绍core库中用来操作有界变量的3个一般行为:outsetremove

5.3.1 out标签

out标签表示将表达式的结果输出到当前的JspWriterout的语法有两种形式,即有body content和没有body content这两种形式:

1
2
3
4
5
6
<!--  没有没有`body content`:  -->
<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"]/>
<!-- 有`body content`形式: -->
<c:out value="value" [escapeXml="{true|false}"]>
default value
</c:out>

这两种形式只是默认值存放的位置不同而已,一个是放在<c:out>标签的default属性中,而一个是放在c:out标签体中.

标签语法

在标签的语法中,[]表示该属性是可选的。如果值带下划线,则表示为默认值。

out属性说明

属性 类型 描述 可选性 默认值
value*+ 对象 要计算的表达式 必须要有该属性
escapeXml+ 布尔 表示结果中的字符<,>,&,'"将被转化成相应的实体码,如<会被转义成&lt;等等。 可选 true
default+ 对象 默认值 可选 主体中的内容
### 属性后面的星号与加号的含义 ###
- 属性名称后面的星号(*)表示该属性是必需的。没有星号表示该属性是可选的.
- 加号(+)表示该属性的rtexprvalue值为true,没有加号表示这意味着该属性的rtexprvalue值为false
- rtexprvalue值为true表示该属性可以赋静态字符串或者动态值Java表达式、EL表达式或者通过<jsp:attribute>设置的值)。
- rtexprvalue值为false时,表示该属性只能赋静态字符串的值
- 总结:有加号表示该属性可以设置为静态字符串或者动态生成的字符串

例如,下列的out标签将输出有界变量X的值:
默认情况下,out会将特殊字符<>'"&分别编写成它们相应的字符实体码 &lt;&gt;&#039;&#034;&amp;
JSP 2.0版本前,out标签是用于输出有界对象值的最容易的方法。在JSP 2.0及其更高的版本中,除非需要对某个值进行XML转义,否则可以放心地使用EL表达式:

1
${x}

警告

如果包含一个或多个特殊字符的字符串没有进行XML转义,它的值就无法在浏览器中正常显示。此外,没有通过转义的特殊字符,会使网站易于遭受交叉网站的脚本攻击。例如,别人可以对它post一个能够自动执行的JavaScript函数/表达式。
out中的default属性可以赋一个默认值,当赋予其value属性的EL表达式返回null时,就会显示默认值default属性可以赋动态值,如果这个动态值返回nullout就会显示一个空的字符串。

例如,在下面的out标签中,如果在HttpSession中没有找到myVar变量,就会显示应用程序范围的变量myVar值。如果应用程序范围的myVar变量也没有找到,则输出一个空的字符串:

1
2
<c:out value="${sessionScope.myVar}"
default="${applicationScope.myVar"/>

原文链接: 5.3 一般行为 5.3.1 out标签