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