【问题标题】:Why won't print in jsp?为什么在jsp中打印不出来?
【发布时间】:2012-08-16 12:38:33
【问题描述】:

下面的代码不会在 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>

【问题讨论】:

  • 可能是因为你没有定义“out”?
  • 仔细检查 url。我确定问题出在 URL 上。
  • URL肯定有问题,如果我提供自己的gagandeepbali.uk.to,那么上面的JSP就可以正常工作了。
  • Gagandeep Bali:我的URL返回一个XML,我认为是问题所在,XML和jsp什么的。我不熟悉 JSP,我喜欢将我的 java 代码编写成 servlet,但现在我必须用 jsp 编写它。 Mathias Schwarz:感谢您的帮助!
  • 深入检查网址。该网址可能有问题。

标签: java jsp inputstream bufferedreader


【解决方案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

【讨论】:

  • Thai Tran:我试过这个网址:w3schools.com/xml/note.xml。为什么我会收到此错误? java.net.NoRouteToHostException:没有到主机的路由:连接
  • 你能在浏览器上连接它吗?无论如何,这与我的网址无关。用你的网址试试看代码是否有效
  • 是的,我可以在浏览器上连接
  • @mamba - 该异常是由于防火墙介入,或者中间路由器已关闭。
  • 看来我有网络问题(防火墙已关闭)。我将在其他电脑上测试代码,我会告诉你它是否有效,然后我会投票并最终接受答案。谢谢大家的时间!
【解决方案2】:

此 URL returns XML 标记并且它不显示。您必须添加 &lt;pre&gt; &lt;/pre&gt; 标签才能显示 XML 标记。

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

must 必须使用 JSTL 的 &lt;import/&gt; 而不是 JSP 中的 Java 代码。

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

<c:out var="${xmlData}"/>

【讨论】:

  • AVD,谢谢您的回答!我添加了 pre 标签和那些导入但仍然没有(我不熟悉 JSP)。这显然与 jsp 有关,因为如果我添加 System.out.println(inputLine);就在 out.println 下方,而 {} 我在控制台中获取 XML
  • 如果 可能,您可以分享该 url 或尝试http://www.google.com 看看会发生什么?
  • 我无法共享该 URL,它已被其他用户屏蔽。我的IP有权限。如果我用 google 替换那个 URL,我会得到这个异常: java.net.NoRouteToHostException: No route to host: connect
  • 代码中的URL和截图中的url不一样。你在screenshot 中添加的URL 是否会引发异常?
  • 不,两个 URL 都在控制台返回,但页面上没有打印 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多