HttpResponse

时间:2020-01-09 10:36:21  来源:igfitidea点击:

HttpServlet类请求处理方法采用两个参数。

  • javax.servlet.http.HttpRequest
  • javax.servlet.http.HttpResponse

例如,这是HttpServlet.doGet()方法的签名:

protected void doGet(
    HttpServletRequest request,
    HttpServletResponse response)
      throws ServletException, IOException {

}

在本文中,我将看看HttpResponse对象。

HttpResponse对象的目的是代表Web应用程序发送回浏览器的HTTP响应,以响应浏览器发送到Web应用程序的HTTP请求。

HttpResponse对象具有很多方法,因此这里仅介绍最常用的方法。如果我们有兴趣,可以在JavaDoc中阅读其余内容。

编写HTML

要将HTML发送回浏览器,必须从HttpResponse对象获得一个PrintWriter。方法如下:

PrintWriter writer = response.getWriter();

writer.write("<html><body>GET/POST response</body></html>");

标头

就像请求对象一样,HttpRequest可以包含HTTP标头。在将任何数据写入响应之前,必须设置标题。我们可以在响应对象上设置标题,如下所示:

response.setHeader("Header-Name", "Header Value");

如我们所见,响应标头是名称,值对。

内容类型

" Content-Type"标头是一个响应标头,它告诉浏览器我们发送回给它的内容的类型。例如,HTML的内容类型是text / html。同样,如果发送回浏览器的是纯文本,则使用内容类型" text / plain"。

这是我们在HttpResponse对象上设置Content-Type标头的方法:

response.setHeader("Content-Type", "text/html");

写文本

我们可以将文本而不是HTML写回到浏览器,如下所示:

response.setHeader("Content-Type", "text/plain");

PrintWriter writer = response.getWriter();
writer.write("This is just plain text");

首先,将" Content-Type"标头设置为" text / plain"。然后,将从响应对象获得的纯文本字符串写入编写器。

内容长度

" Content-Length"标头告诉浏览器,servlet正在发回多少字节。如果要发送回二进制数据,则需要设置内容长度标头。方法如下:

response.setHeader("Content-Length", "31642");

写入二进制数据

我们也可以将二进制数据而不是文本写回到浏览器。例如,我们可以发送回图像,PDF文件或者Flash文件等。

同样,我们首先必须将" Content-Type"标头设置为与我们要发送回的数据相匹配的类型。例如,PNG图像的内容类型为" image / png"。

我们可以在自己喜欢的搜索引擎中搜索" mime类型",以找到mime类型(内容类型)的列表,以便可以找到要发回的内容的mime类型。

为了将二进制数据写回到浏览器,我们不能使用从" response.getWriter()"获得的" Writer"。毕竟," Writer"是用于文本的。

相反,我们必须使用从" response.getOutputStream()"方法获得的" OutputStream"。方法如下:

OutputStream outputStream = response.getOutputStream();

outputStream.write(...);

重定向到其他URL

我们可以将浏览器重定向到与servlet不同的URL。重定向时,我们无法将任何数据发送回浏览器。这是重定向的方式:

response.sendRedirect("http://Hyman.com");