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
值为false
rtexprvalue
值为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}" |