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応答ではなく、stdout(コンソール、ログファイルなど)に行が出力されます。

out応答出力ストリームを参照する暗黙的なオブジェクトを使用します。

out.println(inputLine);

または、JSTL <c:import>を使用することをお勧めします。つまり、スクリプトレットは10年以来推奨されていません

<%@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 に答える