JSP:JSTL的<c:out>标签

编写一个JSP页面, <c:out>到底是做什么的? 我注意到,以下两者都有相同的结果:

 <p>The person's name is <c:out value="${person.name}" /></p> <p>The person's name is ${person.name}</p> 

c:out转义HTML字符,以便您可以避免跨站点脚本。

如果person.name = <script>alert("Yo")</script>

该脚本将在第二种情况下执行,但不会在使用c:out

正如Will Wagner所说,在旧版本的jsp中,您应该始终使用c:out来输出dynamic文本。

而且,使用这个语法:

 <c:out value="${person.name}">No name</c:out> 

名称为空时,可以显示文本“No name”。

如果person.name的值恰好为null, c:out也有一个用于分配默认值的属性。

来源: out(TLDDoc生成的文档)

您可以通过使用属性escapeXml值等于true来显式启用转义Xml实体。 仅供参考,默认情况下为“true”。

老版本的JSP不支持第二种语法。