Я хотел бы избежать символов на страницах 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 охватывает более богатый набор символов.