JSP: тег JSTL <c: out>

Написание страницы JSP, что именно делает <c:out>? Я заметил, что следующие обе имеют одинаковый результат:

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

Ответ 1

c:out удаляет символы HTML, чтобы избежать межсайтового скриптинга.

если person.name = <script>alert("Yo")</script>

script будет выполняться во втором случае, но не при использовании c:out

Ответ 2

Как сказал Уилл Вагнер, в старой версии jsp вы всегда должны использовать c:out для вывода динамического текста.

Кроме того, используя этот синтаксис:

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

вы можете отобразить текст "Нет имени", когда имя равно null.

Ответ 4

Вы можете явно активировать экранирование объектов XML, используя значение атрибута escapeXml равно true. FYI, он по умолчанию "true".

Ответ 5

Старые версии JSP не поддерживают второй синтаксис.