【问题标题】:JSP interpreting <> as html tags and adding end tagJSP将<>解释为html标签并添加结束标签
【发布时间】:2015-03-26 12:51:56
【问题描述】:

我正在开发一个 Spring-MVC 应用程序,其中我将一些文本保存在数据库中,然后显示它。但是例如,如果我在文本字段中添加类似&lt;hello123&gt; 的内容,它会同样保存在数据库中,但是在显示时它会变成&lt;hello123&gt;&lt;/hello123&gt;。我能做些什么来避免 JSP 显示这些结束标记。我正在发布我如何显示代码。非常感谢。

JSP 代码:

<div class="inner-div">
        <span class="notice-text">${notices.mnotetext}</span>
    <span style="display:none"class="ellipsis"><span class="dots"> ... 
   </span><span class="more">mehr</span></span>
 </div>

我正在显示 mnotetext 并且它变得一团糟,我该怎么办?你能帮忙的话,我会很高兴。非常感谢。

编辑Thomas 描述的更改。

  <div class="inner-div">
<span class="notice-text">&lt;hello&gt;</span>  <span style="display:none"class="ellipsis"><span class="dots"> ... /span><span class="more">mehr</span></span>
    </div>

【问题讨论】:

  • 听起来浏览器正在对你的无效HTML进行错误恢复,这与JSP无关。解决方案是首先不要将无效的 HTML 发送到浏览器。
  • @Quentin :这是在避免问题,这些是我正在保存的注释,我无法执行此类规则。你知道解决方法吗?
  • 如果您希望人们编写原始 HTML,那么要求他们编写有效的 HTML 或接受它将被错误纠正并不是不合理的。如果您希望人们编写纯文本,则不应将其视为 HTML,将其以原始形式注入 HTML 文档(即您应先将其转换为 HTML)。
  • @Quentin :例如,我没有看到 Stackoverflow 中发生此类更正。
  • Stackoverflow 不允许您编写原始 HTML。它将输入解析为 Markdown 并输出 HTML。

标签: html jsp tags


【解决方案1】:

您在输出中发送未加密的 HTML。尝试转义值,如下所示。这也将防止 XSS 攻击。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<div class="inner-div">
    <span class="notice-text"> <c:out value="${notices.mnotetext}"/> </span>
    <span style="display:none"class="ellipsis"><span class="dots"> ... 
    </span><span class="more">mehr</span></span>
</div>

这里是 js fiddle,只是在 html 输出中单独显示标签。 https://jsfiddle.net/4hg547s4/

【讨论】:

  • 请在浏览器中选择生成的HTML并点击查看源代码。请在此处粘贴回复
  • 请查看主帖,我已在此处添加编辑。非常感谢。 :-)
  • 问题现在解决了吗?根据编辑,您现在应该在 UI 中看到正确的文本。如果上述解决方案解决了问题,请将其标记为答案:)
  • 如果这没有解决问题,请不要将其标记为答案。因为其他人可能无法帮助你。我没有正确理解您的要求。希望其他人可以帮助您解决这个问题。
猜你喜欢
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-22
  • 2016-05-18
  • 2012-05-21
  • 2019-04-28
  • 1970-01-01
相关资源
最近更新 更多