Вообще <c:out> экранирует XML-теги, но поскольку HTML является нечтом вроде подмножества HTML, то можно его использовать для экранирования HTML-тегов.
Пусть, например, у нас есть переменная модели testMessage, которая содержит текст test<div>GG</div>`~<!@#%^&*()_+-=\|/.,'">test. Выведем в страницу элемент ввода и элемент <div></div>, содержащие это значение:
1 2 |
<input value="<c:out value="${testMessage}" />" > <div><c:out value="${testMessage}" /></div> |
В отрендеренной странице будет вот такое:
1 2 |
<input value="test<div>GG</div>`~<!@#%^&*()_+-=|/.,'">test"> <div>test<div>GG</div>`~<!@#%^&*()_+-=|/.,'">test</div> |
Все нужные символы успешно экранировались, как нам и требовалось.
Вывод: Всегда используйте <c:out> для экранирования HTML-тегов при выводе страниц с помощью JSP/JSPX.