HttpResponse
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");