0

我正在 JSP 页面中编写一个 servlet 来显示请求的网页。我做了相当多的“谷歌搜索”,其中大多数人建议使用 BufferedReader。下面我有从 JSP 页面获取请求的 url 并且 servlet 显示页面的代码。

但是,在运行此程序时,我从 servlet 得到空白。谁能建议我在这段代码中做错了什么?

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

你非常非常接近。但是为什么要在控制台上打印目标网页而不是将其发送回客户端呢?初学者试试这个:

response.getWriter().println(a);

一旦你克服了这个问题,想想如何避免先将整个目标网页加载到 aString然后再将其发回。如何逐行或逐字节读取目标网页并立即发送?不仅客户端会更早收到部分响应,而且您会节省大量内存。

于 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 回答