0

我有一个关于 JAVA 的查询(直接从 URL 中读取)。我想从 URL 中读取内容。我刚刚在 JAVA 中实现了一个代码,它运行良好。但我希望该代码在 JSP 中实现。我尝试在 JSP 页面上使用它,但它不读取 URL 的内容。请帮帮我。

JAVA代码

import java.net.*;
import java.io.*;

public class URLReader {
    public static void main(String[] args) throws Exception {

        URL oracle = new URL("http://www.oracle.com/");
        BufferedReader in = new BufferedReader(
        new InputStreamReader(oracle.openStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null)
            System.out.println(inputLine);
        in.close();
    }
}

JSP 代码

<%@ page import="java.sql.*,java.net.*,java.io.*,java.lang.*,java.util.*"%>
<html>
<title></title>
<head></head>
<body>

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

    String inputLine;
    while ((inputLine = in.readLine()) != null)
        System.out.println(inputLine);
    in.close();
    }catch(Exception ex){}
%>
</body>
</html>

我正在使用 JDK1.5.0_16 和 Tomcat 3.0 版

4

2 回答 2

4

您在 JSP 中的错误是以下行:

System.out.println(inputLine);

这会将行打印到标准输出(控制台、日志文件等),而不是 HTTP 响应。

out使用引用响应输出流的隐式对象:

out.println(inputLine);

或者,更好的是,只使用JSTL <c:import>十年来一直不鼓励使用Scriptlet

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

不要忘记首先升级您的古老(这是轻描淡写的......)服务器。鉴于您正在以老式的方式摆弄 JSP,我还想知道您在学习 JSP 时是否正在阅读正确和最新的资源。 

于 2012-12-29T20:37:19.550 回答
0

您可以使用HttpClient库,因为它非常易于用于您的任务,例如

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://www.yahoo.com");
HttpResponse response = client.execute(request);

// Get the response
BufferedReader rd = new BufferedReader
  (new InputStreamReader(response.getEntity().getContent()));

String line = "";
while ((line = rd.readLine()) != null) {
  textView.append(line);
} 

这是一个教程

不实现 HttpClient 对您来说是一个限制吗?还有一点我想说的是,将这种逻辑放入 JSP 脚本中是个坏主意,您应该使用一些从 URL 获取值并从 JSP 调用相同的服务类。您可以使用 setproperty 和 getproperty 标记从该外部服务加载属性

<jsp:useBean id="some_identifier" class="Foo.class" />

<jsp:getProperty name="some_identifier" property="SomeProperty" />
于 2012-12-29T20:04:36.507 回答