我有一个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
文字?
答案 0 :(得分:2)
如果someString
不是要解释为HTML,您不希望将其按字面输出为HTML,则需要确保对<
和&
进行编码(在至少)。
你可以通过做一对String#replace
:
out.print(someString.replace("&", "&").replace("<", "<"));
请注意,在&
替换之前进行<
替换非常重要(否则您将最终编码&
中的<
)。
如果您有可能在属性值(例如<div data-stuff="output goes here">
)内输出此内容,则还需要对"
进行编码:
out.print(
someString.replace("&", "&")
.replace("<", "<")
.replace("\"", """)
);
...除了琐碎增加HTML的大小外,始终编码"
无害。
如果您在属性(<div data-stuff='output goes here'>
)周围使用单引号,则还需要对'
进行编码。我不知道这些天对'
的浏览器支持有多好(过去常常很不稳定),所以你可以使用'
。我的偏好只是为了确保我总是在属性值周围使用双引号,所以我不必担心撇号。