117

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

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

5 回答 5

157

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

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

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

于 2008-11-14T19:05:04.957 回答
128

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

此外,使用这种语法:

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

当名称为空时,您可以显示文本“无名称”。

于 2008-11-14T19:34:25.617 回答
5

c:outperson.name如果 的值恰好为空,还具有用于分配默认值的属性。

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

于 2008-11-14T19:21:02.443 回答
5

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

于 2009-07-02T16:57:15.763 回答
4

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

于 2008-11-14T19:03:42.730 回答