如何在JSP中转义特殊的HTML字符?

Fre*_*est 35 html java jsp escaping

在我创建自定义标记或Java方法之前,在JSP中转义HTML字符的标准方法是什么?

我有一个String对象,我想在HTML中显示它,以便它按原样显示给用户.

例如:

String a = "Hello < World";
Run Code Online (Sandbox Code Playgroud)

会成为:

Hello &lt; World
Run Code Online (Sandbox Code Playgroud)

Sla*_*ast 52

简短回答:

<c:out value="${myString}"/>
Run Code Online (Sandbox Code Playgroud)

还有另一种选择:

<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
${fn:escapeXml(myString)}
Run Code Online (Sandbox Code Playgroud)

  • 要小心,因为转义XML和HTML之间存在差异. (7认同)
  • 是的,着名的可怕的`'`:*字符实体引用&lt;,&gt;,&quot; 和&amp; 在HTML和SGML中预定义,因为<,>,"和&已经用于分隔标记.这显然不包括XML的'(')实体.有关所有命名的HTML字符实体引用的列表,请参阅XML列表和HTML字符实体引用(大约250个条目).* - 来自维基百科:http://en.wikipedia.org/wiki/Character_encodings_in_HTML (4认同)
  • 请注意,这不会阻止所有XSS漏洞!如果你有`var show = $ {fn:escapeXml(show)}`你不需要`<`或```来利用它! (3认同)