2012-05-16 139 views
0

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

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

response.getWriter().println(a); 

一旦你克服这个问题看你如何才能避免第一加载整个目标网页的String然后再送回来。如何逐行或逐字节读取目标网页并立即发送?不仅客户端会收到部分响应,而且会节省大量内存。

+0

感谢您的回复。我已经评论了我最后一行添加的建议。但仍然没有输出。结果是完全空白仍然:(。 – user1382329

+0

@ user1382329:你可以调试或打印什么是'a'变量的内容,然后将'println()'调用到servlet响应? –

+0

system.out.println(a);给出在控制台没有输出,我明确地通过网址例如“http://www.stackoverflow.com”到网址,但仍然无法获得任何输出 – user1382329

1

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

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

在添加

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

它应该工作。 如果它仍然不工作尝试,

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