0

要求された Web ページを表示するために、JSP ページにサーブレットを作成しています。私はかなりの「グーグル」を行いましたが、それらのほとんどは BufferedReader の使用を提案しました。以下に、要求された URL を JSP ページから取得し、サーブレットがそのページを表示するコードを示します。

ただし、これを実行している間、サーブレットから空白になります。このコードで私が何をしていたのか、誰かに教えてもらえますか?

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String server = request.getParameter("browsebox");

        URL url = new URL(server);
        URLConnection yc = url.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(
                yc.getInputStream(), "UTF-8"));
        String inputLine;
        StringBuilder a = new StringBuilder();
        while ((inputLine = in.readLine()) != null)
            a.append(inputLine);
        in.close();

       PrintWriter out = response.getWriter();
        out.println(a);
        // String output= a.toString();
        //System.out.println(output);
    }
4

3 に答える 3

4

あなたはとても、とても近いです。しかし、ターゲット Web ページをクライアントに送り返すのではなく、コンソールで印刷するのはなぜでしょうか? 手始めにこれを試してください:

response.getWriter().println(a);

この問題を解決したら、対象の Web ページ全体を最初に にロードしてStringから返送しないようにするにはどうすればよいかを考えてください。対象の Web ページを 1 行ずつ、または 1 バイトずつ読み取って、すぐに送信するのはどうですか? クライアントが部分的な応答をより早く受け取るだけでなく、多くのメモリを節約できます。

于 2012-05-16T21:11:01.007 に答える
1

応答オブジェクトから PrintWriter オブジェクトを取得する必要があります。

PrintWriter writer = response.getWriter();
writer.println(<value>);
于 2012-05-16T21:12:49.803 に答える
0

追加した後

PrintWriter out=response.getWriter();
out.println(a);

それはうまくいくはずです。それでもうまくいかない場合は、

PrintWriter out=response.getWriter();
out.println(a);`
out.flush();
于 2012-05-17T05:48:24.867 に答える