5.3 一般行为 5.3.1 out标签
5.3 一般行为
下面介绍core库中用来操作有界变量的3个一般行为:out、set、remove。
5.3.1 out标签
out标签表示将表达式的结果输出到当前的JspWriter中。out的语法有两种形式,即有body content和没有body content这两种形式:
1 | <!-- 没有没有`body content`: --> |
这两种形式只是默认值存放的位置不同而已,一个是放在<c:out>标签的default属性中,而一个是放在c:out标签体中.
标签语法
在标签的语法中,
[]表示该属性是可选的。如果值带下划线,则表示为默认值。
out属性说明
| 属性 | 类型 | 描述 | 可选性 | 默认值 |
|---|---|---|---|---|
value*+ |
对象 | 要计算的表达式 | 必须要有该属性 | 无 |
escapeXml+ |
布尔 | 表示结果中的字符<,>,&,'和"将被转化成相应的实体码,如<会被转义成<等等。 |
可选 | true |
default+ |
对象 | 默认值 | 可选 | 主体中的内容 |
属性后面的星号与加号的含义
- 属性名称后面的星号(
*)表示该属性是必需的。没有星号表示该属性是可选的. - 加号(
+)表示该属性的rtexprvalue值为true,没有加号表示这意味着该属性的rtexprvalue值为falsertexprvalue值为true表示该属性可以赋静态字符串或者动态值(Java表达式、EL表达式或者通过<jsp:attribute>设置的值)。rtexprvalue值为false时,表示该属性只能赋静态字符串的值。- 总结:有加号表示该属性可以设置为静态字符串或者动态生成的字符串。
例如,下列的out标签将输出有界变量X的值:
默认情况下,out会将特殊字符<、>、'、"和&分别编写成它们相应的字符实体码 <、 >、'、"和&。
在JSP 2.0版本前,out标签是用于输出有界对象值的最容易的方法。在JSP 2.0及其更高的版本中,除非需要对某个值进行XML转义,否则可以放心地使用EL表达式:
1 | ${x} |
警告
如果包含一个或多个特殊字符的字符串没有进行XML转义,它的值就无法在浏览器中正常显示。此外,没有通过转义的特殊字符,会使网站易于遭受交叉网站的脚本攻击。例如,别人可以对它post一个能够自动执行的JavaScript函数/表达式。out中的default属性可以赋一个默认值,当赋予其value属性的EL表达式返回null时,就会显示默认值。default属性可以赋动态值,如果这个动态值返回null,out就会显示一个空的字符串。
例如,在下面的out标签中,如果在HttpSession中没有找到myVar变量,就会显示应用程序范围的变量myVar值。如果应用程序范围的myVar变量也没有找到,则输出一个空的字符串:
1 | <c:out value="${sessionScope.myVar}" |