JSP:JSTL的<c:out>标记

问题

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

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

#1 热门回答(146 赞)

c:outescapes HTML字符,以便你可以避免跨站点脚本。

ifperson.name = <script>alert("Yo")</script>

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


#2 热门回答(117 赞)

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

而且,使用以下语法:

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

当name为null时,你可以显示文本"No name"。


#3 热门回答(5 赞)

c:out还具有用于在值person.name变为空时指定默认值的属性。

来源:out (TLDDoc Generated Documentation)