HttpResponse(http 响应类)

HttpServlet类的请求处理方法(doGetdoPost …)有2个参数。

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

例如,下面是HttpServlet.doGet()方法的声明,可以看到有上面提到的2个参数

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

}

本文将学习HttpResponse类。

HttpResponse类表示web服务端发送回浏览器的HTTP响应,是对浏览器所发送请求的响应。

HttpResponse类有很多方法与成员,我们关注最常用的部分,如需进一步了解可参阅其他文档。

输出HTML

要将HTML发送回浏览器,可从HttpResponse对象获取一个PrintWriter:

PrintWriter writer = response.getWriter();

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

Headers

就像HttpRequest一样,HttpResponse也可以包含HTTP报头。
报头信息必须首先设置,不能在向响应写入信息后再设置。
下面示例设置一个报头信息:

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

与请求报头类似,可以看到响应报头是一个名值对。

Content-Type

content-type是一个响应报头,表示向浏览器发回的内容的类型。如HTML的内容类型是text/HTML,纯文本的内容类型text/plain

下面示例在HttpResponse对象上设置内容类型报头:

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

输出纯文本

可以向浏览器返回纯文本:

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

PrintWriter writer = response.getWriter();
writer.write("奇客谷纯文本");

上面代码中,首先设置内容类型为text/plain,然后将一个纯文本字符串返回给浏览器。

Content-Length

Content-Length报头告诉浏览器servlet返回了多少字节。如果要返回二进制数据,需要设置内容长度报头:

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

输出二进制数据

可以将二进制数据返回给浏览器,如图片、pdf文件等等。

同样地,输出二进制数据首先要设置Content-Type报头为合适的类型,如PNG图像的Content-Typeimage/PNG

可以在网上搜一下mime类型,会看到很多内容类型。

输出二进制数据不能使用response.getWriter(),这个只能用于文本,要使用response.getOutputStream()方法,从中获得OutputStream:

OutputStream outputStream = response.getOutputStream();

outputStream.write(...);

重定向到不同URL

可以将浏览器重定向到另一个URL。在重定向时,不能将任何数据发送回浏览器。

下面示例是重定向:

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


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载