Я хотел бы избежать символов на страницах JSP. Что более подходит, escapeXml
или escapeHtml
?
В чем разница между escapeXml и escapeHtml?
Ответ 1
Они предназначены для разных целей, в HTML есть много объектов, которые нет в XML. XML имеет только 5 экранов:
< represents "<"
> represents ">"
& represents "&"
' represents '
" represents "
В то время как у HTML есть нагрузки - подумайте о
©
и т.д. Эти HTML-коды недопустимы в XML, если вы не включили определение в заголовок. Числовые коды (например, ©
для символа авторского права) действительны в обоих.
Ответ 2
В JSP нет такой вещи, как escapeHtml
. Обычно вы используете <c:out escapeXml="true">
(он уже по умолчанию имеет значение true
, поэтому вы можете его опустить) или fn:escapeXml()
, чтобы избежать HTML в JSP.
например.
<c:out value="Welcome, ${user.name}" />
<input name="foo" value="${fn:escapeXml(param.foo)}" />
Он будет избегать их как XML-сущностей, которые отлично работают в простом HTML. Они буквально называются объектами XML, поскольку объекты HTML недействительны в XML.
См. также:
Ответ 3
Поскольку вы отправляете HTML обратно потребителю, я бы пошел с escapeHtml
.
escapeXml
поддерживает только экранирование пяти основных объектов XML (gt, lt, quot, amp, apos), тогда как escapeHtml
поддерживает экранирование всех известных HTML 4.0.
Ответ 4
Предполагая, что вы имеете в виду commons StringEscapeUtils, escapeXml работает только с <>"'&
, а escapeHtml охватывает более богатый набор символов.