Ответ 1
c:out
удаляет символы HTML, чтобы избежать межсайтового скриптинга.
если person.name = <script>alert("Yo")</script>
script будет выполняться во втором случае, но не при использовании c:out
Написание страницы JSP, что именно делает <c:out>
? Я заметил, что следующие обе имеют одинаковый результат:
<p>The person name is <c:out value="${person.name}" /></p>
<p>The person name is ${person.name}</p>
c:out
удаляет символы HTML, чтобы избежать межсайтового скриптинга.
если person.name = <script>alert("Yo")</script>
script будет выполняться во втором случае, но не при использовании c:out
Как сказал Уилл Вагнер, в старой версии jsp вы всегда должны использовать c:out
для вывода динамического текста.
Кроме того, используя этот синтаксис:
<c:out value="${person.name}">No name</c:out>
вы можете отобразить текст "Нет имени", когда имя равно null.
c:out
также имеет атрибут для назначения значения по умолчанию, если значение person.name
имеет значение null.
Вы можете явно активировать экранирование объектов XML, используя значение атрибута escapeXml равно true. FYI, он по умолчанию "true".
Старые версии JSP не поддерживают второй синтаксис.