一尘不染

无法在JSP页面中正确显示特殊字符

jsp

我需要在表TD中显示以下特殊字符(不包括<符号和正斜杠之间的反斜杠),

1) '/<\/@/test#/$/&/)'

但是,浏览器只能显示’/,即数据被截断。

仅当<和/字符连续出现时,才会发生上述问题。

也就是说,跟随作品,因为<符号后没有连续的正斜杠/

2) '/<@/test#/$/&/)'

我正在使用Java代码来转义其他特殊字符。我能够用&符号成功替换<; 但是仅当<和/一起出现时,才如何替换正斜杠/。

请帮我

抱歉,即使在此网站中,您也看不到我需要实现的目标,因此在第1点中,请排除反斜杠(为了显示您的理解,我需要不加反斜杠显示)。我是新用户,因此无法发布图片。


阅读 559

收藏
2020-06-08

共1个答案

一尘不染

默认情况下,Web浏览器将JSP发送的所有内容都视为HTML。该<指示开始HTML标签,因此网页浏览器会分析它本身(而最终失败的原因语法错误)。

你想逃避那些HTML特殊字符,例如<>&"

&lt; will be displayed as <
&gt; will be displayed as >
&amp; will be displayed as &
&quot; will be displayed as "

如果它是动态文本,则最好使用JSTL<c:out>标记来完成。

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
...
<c:out value="${bean.text}" />

如果要设置HTML属性,则JSTL
fn:escapeXml()函数
更好。

<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<input type="text" value="${fn:escapeXml(bean.text)}" />
2020-06-08