[英]JSP Servlet to retrieve(display) web pages
我在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);
}
你非常非常亲密。 但是,为什么要在控制台上打印目标网页,而不是将其发送回客户端? 尝试一下入门:
response.getWriter().println(a);
克服该问题后,请考虑如何避免首先将整个目标网页加载到String
,然后再将其发送回。 逐行或逐字节读取目标网页并立即发送该怎么办? 不仅客户端会更早收到部分响应,而且还可以节省大量内存。
您需要从响应对象获取PrintWriter对象。
PrintWriter writer = response.getWriter();
writer.println(<value>);
添加后
PrintWriter out=response.getWriter();
out.println(a);
它应该工作。 如果仍然无法解决,请尝试,
PrintWriter out=response.getWriter();
out.println(a);`
out.flush();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.