【发布时间】:2016-03-07 17:08:16
【问题描述】:
我的代码中可能有一个小问题,其中我从 Web 服务获取 HTML 作为响应,该服务作为 java 字符串返回。我想在网页上将此字符串显示为 HTML。我面临的问题是返回的html包含一些
形式的脚本<% ... %>
标签。这些正在网页上显示。我想要的是立即对这些进行评估,而不是在屏幕上显示为文本。 例如,正在显示的文本是
<% if('a' == 'b'){ %>
你好。
我想摆脱 的东西。
提前致谢。
【问题讨论】:
-
你得到的 JSP 源不是纯 HTML,所以我会检查为什么会这样(这可能不是故意的)。否则,您可以查找
<%或%>并显示错误或使用正则表达式删除它(例如String.replaceAll("<%.*?%>",""))。 JSP 代码的问题在于 HTML 结构可能会根据这些标签的评估方式而改变,因此仅删除它们可能不会产生您想要的结果。 -
@Thomas - 是的,没错。每次标签的评估可能不同,因此删除这些标签不是明智之举。 JSP 代码每次都可以在运行时进行评估吗?
-
好吧,您可以将 JSP 代码提供给 JSP 引擎以对其进行评估,但由于它似乎来自第 3 方服务器,因此我不确定这是否是明智之举。即使您不考虑安全风险(您是否完全信任从该服务器获得的所有代码?)您可能会遇到当前类路径中不存在类、数据丢失等问题。我宁愿让服务器评估 JSP 并仅返回纯 html(或者,如果您愿意,可以返回 JSON 或 XML)。
标签: javascript java html string escaping