Java 如何在jsp页面中将字符串显示为xml
我正在处理Struts2项目,在action类中,我将字符串传递给jsp页面。我想在jsp页面中将该字符串内容显示为xml jsp页面:response.jspJava 如何在jsp页面中将字符串显示为xml,java,html,xml,jsp,struts2,Java,Html,Xml,Jsp,Struts2,我正在处理Struts2项目,在action类中,我将字符串传递给jsp页面。我想在jsp页面中将该字符串内容显示为xml jsp页面:response.jsp <%@ taglib prefix="s" uri="/struts-tags" %> <s:property value="sampleStr" /> 动作类:反应类 public class ResponseAction extends ActionSupport { private stati
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:property value="sampleStr" />
动作类:反应类
public class ResponseAction extends ActionSupport {
private static final long serialVersionUID = 1L;
public String sampleStr;
public String execute() throws IOException {
String responseStr = readStringFile();
setSampleStr(responseStr);
return SUCCESS;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public String readStringFile() throws IOException{
String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"+
"<response>"+ "$$" +
"</response>";
InputStream inputStream = XmlFormatter.class.getResourceAsStream("/sample.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-16")));
String s = "";
List list = new ArrayList();
String line;
while ((line = reader.readLine()) != null) {
list.add(line);
}
for (Object s1: list) {
s= s + s1;
}
xmlStr = xmlStr.replace("$$", s);
return xmlStr;
}
public String getSampleStr() {
return sampleStr;
}
public void setSampleStr(String sampleStr) {
this.sampleStr = sampleStr;
}
}
公共类响应扩展了ActionSupport{
私有静态最终长serialVersionUID=1L;
公共字符串样本;
公共字符串execute()引发IOException{
String responsest=readStringFile();
设置采样器(应答器);
回归成功;
}
@SuppressWarnings({“rawtypes”,“unchecked”})
公共字符串readStringFile()引发IOException{
字符串xmlStr=“\n”+
""+ "$$" +
"";
InputStream InputStream=XmlFormatter.class.getResourceAsStream(“/sample.txt”);
BufferedReader=新的BufferedReader(新的InputStreamReader(inputStream,Charset.forName(“UTF-16”));
字符串s=“”;
列表=新的ArrayList();
弦线;
而((line=reader.readLine())!=null){
列表。添加(行);
}
用于(对象s1:列表){
s=s+s1;
}
xmlStr=xmlStr.replace(“$$”,s);
返回xmlStr;
}
公共字符串getSampleStr(){
返回样本TR;
}
公共无效设置采样器(字符串采样器){
this.sampleStr=sampleStr;
}
}
Struts.xml:
<package name="default" namespace="/" extends="struts-default">
<action name="PEConsolidation" class="com.metlife.ibit.pe.web.controller.actions.ResponseAction">
<interceptor-ref name="defaultStack" />
<result name="success">/WEB-INF/jsps/response.jsp</result>
</action>
</package>
/WEB-INF/jsps/response.jsp
当我查看response.jsp时,它将返回字符串显示为文本。是否请任何人帮助显示为xml内容?我认为浏览器试图将xml标记解释为HTML标记,如果不这样做,就会忽略它们 您需要将每个
&;lt代码>和&;燃气轮机代码>分别为。您可以在JavaAPI中使用非常有用的String.replaceAll()
方法
另外,你可以查看这个。在使用JSP和XML技术的开发过程中,这将非常有帮助s:property
具有HTML、JavaScript和XML的内置转义功能。
默认情况下,它转义为HTML
我认为你想做的根本不是逃避:
<s:property value="sampleStr" escapeHtml="false" />
您还应该检查响应的http头(“content-type:text/html”
在您的情况下是错误的)
您可以研究使用不同的结果类型,也可以编写自己的结果类型,而不是使用jsp
如果希望将其解释为XML,则需要设置内容配置,同时警告用户/浏览器将根据其设置来处理XML内容。如果您只想将其作为纯文本,例如,不使用语法着色,那么就不要将其作为HTML返回,而是作为纯文本返回。