“&LT; \&DIV gt;” 中<div>标签内的文字

时间:2015-12-11 09:49:41

标签: java html jsp

我有一个jsp,它由java方法void init() { .... out.print("<div>"); out.print(someString); out.print("</div>"); .... } 初始化。

Init就像

someString

"string</div>"包含"string"时,我的jsp上只收到"string</div>"个文字,但我想获得"</div>"。如何在html中的<div>标签内打印xterm -iconic 文字?

1 个答案:

答案 0 :(得分:2)

如果someString不是要解释为HTML,您不希望将其按字面输出为HTML,则需要确保对<&进行编码(在至少)。

你可以通过做一对String#replace

来做到这一点
out.print(someString.replace("&", "&amp;").replace("<", "&lt;"));

请注意,在&替换之前进行<替换非常重要(否则您将最终编码&中的&lt;)。

如果您有可能在属性值(例如<div data-stuff="output goes here">)内输出此内容,则还需要对"进行编码:

out.print(
    someString.replace("&", "&amp;")
               .replace("<", "&lt;")
               .replace("\"", "&quot;")
);

...除了琐碎增加HTML的大小外,始终编码"无害。

如果您在属性(<div data-stuff='output goes here'>)周围使用单引号,则还需要对'进行编码。我不知道这些天对&apos;的浏览器支持有多好(过去常常很不稳定),所以你可以使用&#39;。我的偏好只是为了确保我总是在属性值周围使用双引号,所以我不必担心撇号。