gpt4 book ai didi

java - 替换JSP中的HTML特殊字符

转载 作者:行者123 更新时间:2023-12-02 05:48:04 30 4
gpt4 key购买 nike

我创建了一个名为 ServletUtils 的类,其中有一个方法可以替换所有 HTML 特殊字符,如下所示:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class ServletUtils
{
public static String replaceHTMLSpecialChars(String str)
{
StringBuffer buffer = new StringBuffer();
char temp;
for(int i = 0; i < str.length(); i++)
{
temp = str.charAt(i);
if(temp == '<')
{
buffer.append("&lt;");
}
else if(temp == '>')
{
buffer.append("&gt;");
}
else if(temp == '"')
{
buffer.append("&quot;");
}
else if(temp == '&')
{
buffer.append("&amp;");
}
else
{
buffer.append(temp);
}
}
return buffer.toString();
}

public static String replaceHTMLSpecialCharsFromFile(String filepath)
{
StringBuffer buffer = new StringBuffer();
try
{
File file = new File(filepath);
if(file.exists())
{
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
buffer.append(line + "\n");
}
br.close();
}
else
{
System.out.println("File doesn't exist: " + filepath);
}
}
catch(FileNotFoundException fnfe){fnfe.printStackTrace();}
catch(IOException io){io.printStackTrace();}

return replaceHTMLSpecialChars(buffer.toString());
}

public static void main(String[] args)
{
System.out.println(ServletUtils.replaceHTMLSpecialCharsFromFile("C:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\webapps\\jed_1.1\\jsp\\server_processing.jsp"));
}

}

使用 main 方法测试它当然有效,但是从 JSP 页面调用时:

<textarea rows="25" cols="110" readonly="readonly">
<%
String contextPath = request.getServletContext().getRealPath("/");
ServletUtils.replaceHTMLSpecialCharsFromFile(contextPath + "jsp\\server_processing.jsp");
%>
</textarea>

我得到一个空白文本区域。我知道 ServletUtils 方法可以工作。那么为什么我无法将结果加载到 JSP 页面中的文本区域呢?请指教。

最佳答案

脚本中的最后一行确实计算出您想要的字符串,但没有任何内容打印该字符串。

JSTL 核心 out标记会执行您想要的操作,并且还会为您执行 HTML 实体转义(因此您不需要 replaceHTMLSpecialChars 方法)。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%
String contextPath = request.getServletContext().getRealPath("/");
String text = contextPath + "jsp\\server_processing.jsp";
%>

<textarea rows="25" cols="110" readonly="readonly">
<c:out value="${text}"/>
</textarea>

关于java - 替换JSP中的HTML特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23858142/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com