java - 在数据库中存储多行字符串并在网页中显示它们

标签 java encoding

我正在从文本区域获取值并将它们存储在数据库中以供以后显示。当前情况是字符串在数据库中存储为“\n”。在显示之前,我使用 replaceAll 方法将所有\n 字符替换为
。但问题是当我显示它时,< 和 > 字符被转换为 <>

解决这个问题的正确方法应该是什么?

comment.replaceAll("\n", "<br>")

最佳答案

您需要在显示期间禁用转义。目前还不清楚您使用的是什么 View 技术和/或标签库,但这对于 JSTL 是典型的 <c:out>和 JSF <h:outputText> .它们都默认转义 predefined HTML/XML entites , 但有一个额外的属性来禁用转义。

联合实验室:

<c:out value="${bean.text}" escapeXml="false" />

JSF:

<h:outputText value="#{bean.text}" escape="false" />

但是,保留XSS attacks请记住这些文本是用户控制的输入的情况。您可能需要在保存到数据库之前清理它,例如 Jsoup .

顺便说一句,而不是replaceAll()你也可以只使用 CSS white-space: pre;按原样显示换行符。

关于java - 在数据库中存储多行字符串并在网页中显示它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4398281/

相关文章:

java - 附加到路径 Java us

Java lambda 返回一个 lambda

email - 如何从 shell 脚本通过邮件发送特殊字符?

php - xsendfile 期望什么编码?

c# - 什么是文本文件中的 ?

java - 如何为员工设计 Java Contract 类

java - 如何使用 Jersey 计算多部分请求正文的 MD5 哈希值

java - 如何使用 apache POI for word 在文本上添加删除线

json - Node js : change csv file encoding programatically and parse to json

mysql - 向mysql插入特殊字符