tags:

views:

7239

answers:

5
+4  Q: 

JSP <c:out> tag

Writing a JSP page, what exactly does the <c:out> do? I've noticed that the following both has the same result:

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

Older versions of JSP did not support the second syntax.

Will Wagner
+7  A: 

c:out escapes HTML characters so that you can avoid cross-site scripting.

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

the script will be executed in the second case, but not when using c:out

krosenvold
Only if 'escapeXML' it set to true (not sure if it is by default)
Chris Serra
I believe it is true by default.
Zack Mulgrew
A: 

c:out also has an attribute for assigning a default value if the value of person.name happens to be null.

Source: out (TLDDoc Generated Documentation)

Chris Serra
+9  A: 

As said Will Wagner, in old version of jsp you should always use c:out to output dynamic text.

Moreover, using this syntax:

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

you can display the text "No name" when name is null.

alexmeia
Cool! I did not know that.
Adam Asham
A: 

You can explicitly enable escaping of Xml entities by using an attribute escapeXml value equals to true. FYI, it's by default "true".

Greenhorn