JSP : JSTL's <c:out> tag

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

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

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

c:out转义了 HTML 字符,这样你就可以避免跨网站脚本。

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

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

c:out还有一个属性,用于在 person.name的值碰巧为空时分配默认值。

资料来源: 输出(TLDDoc 生成的文档)

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

此外,使用这种语法:

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

当 name 为 null 时,可以显示文本“ No name”。

可以通过使用等于 true 的属性 escape eXml 值显式启用 Xml 实体的转义。顺便说一句,默认是“真的”。