如何在JSP页面中将带HTML标签的纯文本渲染为带CSS样式的HTML内容
问题根因
你使用JSTL标签输出内容时默认开启了XML转义,会将HTML的<、>、引号等特殊字符转换为字符实体,浏览器会将转换后的内容识别为纯文本,不会解析其中的HTML标签,所以样式无法生效。
实现HTML正常渲染的方案
- 方案1:使用
<c:out>标签时主动关闭转义
给<c:out>添加escapeXml="false"属性即可关闭默认转义,示例代码如下:
其中<c:out value="${yourDbContent}" escapeXml="false" />${yourDbContent}替换为你从数据库读取内容对应的EL变量。 - 方案2:直接使用EL表达式输出
不使用<c:out>包裹,直接输出EL变量,EL表达式默认不会转义HTML内容,示例代码如下:${yourDbContent}
注意事项
如果数据库存储的内容包含用户提交的可编辑内容,关闭HTML转义会存在XSS跨站脚本攻击风险,建议在存储或输出前对内容做安全过滤,移除<script>、<iframe>等恶意标签及相关事件属性。
如果渲染后样式仍未生效,可检查页面引入的CSS规则是否和内容中的HTML标签class、id属性匹配,确认是否存在CSS选择器权重不足导致样式被覆盖的问题。
内容的提问来源于stack exchange,提问作者Aadhineni Ganesh
相关产品推荐
相关产品推荐

