2008-11-14 5 views
100

Schreiben einer JSP-Seite, was genau macht die <c:out>? Ich habe festgestellt, dass das Folgende beide das gleiche Ergebnis hat:JSP: JSTL <c:out> tag

Antwort

144

c:out Escaped HTML-Zeichen, so dass Sie Cross-Site-Scripting vermeiden können.

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

das Skript wird im zweiten Fall ausgeführt wird, nicht jedoch bei der Verwendung von c:out

+1

Nur wenn 'escapeXML' es auf wahr (nicht sicher, ob es standardmäßig ist) –

+16

Ich glaube, es ist standardmäßig wahr. –

+7

N.B. Es entkommt XML nicht HTML. Eine der ärgerlicheren Feinheiten von JSTL. Am Ende schreibe ich immer meine eigene HTML-Escape-EL-Fn. –

3

Ältere Versionen von JSP unterstützt die zweite Syntax nicht.

+0

Warum der Downvote? – Thilo

116

Wie gesagt Will Wagner, in der alten Version von jsp Sie immer c:out zur Ausgabe von dynamischem Text verwenden sollen.

Außerdem mit folgenden Syntax:

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

können Sie den Text "No Name" angezeigt werden, wenn der Name null ist.

+22

Cool! Das wusste ich nicht. –

+0

Einverstanden, cool. Danke fürs Unterrichten und Helfen. Das wusste ich auch nicht. Prost! –

+18

oder gmustudent

5

Sie können das Entweichen von Xml-Entitäten explizit aktivieren, indem Sie ein Attribut verwenden, das den Wert von escapeXml gleich true hat. Zu Ihrer Information, es ist standardmäßig "wahr".

+0

Ein Beispielcode würde diese Antwort wirklich vervollständigen. – RachelC