JSP Servlet检索(显示)网页

时间:2012-05-16 21:02:38

标签: java jsp servlets

我正在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);
    }

3 个答案:

答案 0 :(得分:4)

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

response.getWriter().println(a);

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

答案 1 :(得分:1)

您需要从响应对象中获取PrintWriter对象。

PrintWriter writer = response.getWriter();
writer.println(<value>);

答案 2 :(得分:0)

添加

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

它应该有用。 如果它不起作用,请尝试,

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