2

下面的代码不会在 jsp 中打印(while{} 中的 out.println),但它在 Java 程序中就像一个魅力。你能解释一下为什么不会在 jsp 中打印以及我应该在代码中更改什么?谢谢!

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<%@ page import="java.io.BufferedReader" %>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.InputStreamReader" %>
<%@ page import="java.io.PrintWriter" %>
<%@ page import="javax.servlet.ServletException" %>
<%@ page import="javax.servlet.http.HttpServlet" %>
<%@ page import="javax.servlet.http.HttpServletRequest" %>
<%@ page import="javax.servlet.http.HttpServletResponse" %>
<%@ page import="java.net.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Test

<%try{
URL url = new URL("http://gesi-ro-test.banat.enelro:8010/dynamic/gesi/ri/elab/endcallrequest/wind.ser?id=008201dfa306f4a6&es=&is=2011/04/20%2013:09:46.593&rt=RE");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

String inputLine = "";
while ((inputLine = in.readLine()) != null)
    {
        out.println(inputLine);
    }
in.close();
}catch(Exception e){
    out.println(e);
    }%>

</body>
</html>
4

2 回答 2

1

此 URLreturns XML标记并不会显示。您必须添加<pre> </pre>标签才能显示 XML 标记。

out.println("<pre>");
String inputLine = "";
while ((inputLine = in.readLine()) != null)
    {
        out.println(inputLine);
    }
out.println("</pre>");
in.close();

must必须在 JSP 中使用 JSTL<import/>而不是 Java 代码。

<c:import var="xmlData" url="http://your.url" />

<c:out var="${xmlData}"/>
于 2012-08-21T07:51:22.460 回答
1

再次检查您的网址。我在另一个站点上尝试了您的代码,它可以工作:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>


<%@ page import="java.io.BufferedReader" %>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.InputStreamReader" %>
<%@ page import="java.io.PrintWriter" %>
<%@ page import="javax.servlet.ServletException" %>
<%@ page import="javax.servlet.http.HttpServlet" %>
<%@ page import="javax.servlet.http.HttpServletRequest" %>
<%@ page import="javax.servlet.http.HttpServletResponse" %>
<%@ page import="java.net.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test</title>
</head>
<body>

<%
URL url;
try {
    url = new URL("http://www.w3schools.com/xml/note.xml");
    BufferedReader in = new BufferedReader(new InputStreamReader(
            url.openStream()));

    String inputLine = "";
    while ((inputLine = in.readLine()) != null) {
%>

<c:out value="<%=inputLine%>"/>

<%
    }
    in.close();
} catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

%>

</body>
</html>

就个人而言,我不喜欢在jsp文件中放很多“if”、“while”命令(这会让你的系统以后变得一团糟),所以,试着在你的业务逻辑中处理一切,然后发送结果到jsp作为属性

于 2012-08-21T09:05:43.863 回答