Java 在JSP中显示HTML特殊字符:为什么以及何时转义?

Java 在JSP中显示HTML特殊字符:为什么以及何时转义?,java,html,jsp,spring-mvc,Java,Html,Jsp,Spring Mvc,我有一个文件testHTML.jsp来显示包含一些HTML特殊字符的字符串: <body> <div id="test" class="test"> <c:out value="${htmlContent}" /> </div> </body> 变量htmlContent在SpringMVC控制器中设置: @RequestMapping(value = "/testHTML", method = R

我有一个文件testHTML.jsp来显示包含一些HTML特殊字符的字符串:

<body>
    <div id="test" class="test">
        <c:out value="${htmlContent}" />
    </div>
</body>

变量htmlContent在SpringMVC控制器中设置:

@RequestMapping(value = "/testHTML", method = RequestMethod.GET)
public String getHTML(HttpServletRequest request) {
    String content = "<html>\n<p>Test Me\n</html>\n";
    request.setAttribute("htmlContent", content);
    return "/test/testHTML";
}
@RequestMapping(value=“/testHTML”,method=RequestMethod.GET)
公共字符串getHTML(HttpServletRequest){
字符串内容=“\n测试我\n\n”;
setAttribute(“htmlContent”,content);
返回“/test/testHTML”;
}
在Tomcat上部署测试应用程序,并使用Firefox显示jsp。变量内容以其原始格式打印,并带有尖括号等。也就是说,HTML特殊字符被转义。这可以通过查看Firefox呈现页面的源代码来确认


我的问题是在这个过程中谁做了逃跑的工作?web浏览器(Firefox)、jsp引擎还是其他什么?谢谢

尝试在标准模板中定义内容。使其跨浏览器兼容

String content ="
<!DOCTYPE html>
<html>
<body>

<h1>Test Me</h1>

<p>Test Me 2.</p>

</body>
</html>";
字符串内容=”
考验我
测试我2

";
FF不会。它不知道服务器上正在运行什么。它只看到服务器端代码的输出。这些输出可以由java、php、shell脚本或大量敲击键盘的猴子产生。firefox不关心,也不需要关心。它是与JSTL
标记关联的
escapeXml
属性,其默认值为true。如果在任何情况下需要,您都可以显式地将其设置为false。这与Spring/SpringMVC/任何浏览器都没有关系。如果Firefox没有参与,那么是谁做的?这是一个小型测试应用程序,前端是jsp,SpringMVC是控制器,纯Java。很抱歉,我没有看到Tiny的评论。谢谢蒂尼。