22
public class HelloWorld extends HttpServlet{ 
      public void doGet(HttpServletRequest request, 
      HttpServletResponse response)
      throws ServletException,IOException{
      **response.setContentType("text/html");**
      PrintWriter pw = response.getWriter();
      pw.println("<html>");
      pw.println("<head><title>Hello World</title></title>");
      pw.println("<body>");
      pw.println("<h1>Hello World</h1>");
      pw.println("</body></html>");
      }
    }
4

6 回答 6

22

内容类型包含在 HTTP 响应中,因为内容中相同的字节序列值可以以多种方式解释。(*)

请记住,http 不仅可以传输 HTML(js、css 和图像是明显的例子),而且在某些情况下,接收者将不知道它将接收什么类型的对象。


(*) 这里最明显的是 XHTML——它是 XML。如果它的内容类型为application/xml,则接收者应该将其视为 XML。如果它被用作application/xhtml+xml,那么它应该被视为 XHTML。

于 2013-01-12T06:49:28.827 回答
14

来自 JavaEE 文档ServletResponse#setContentType

  • 如果响应尚未提交,则设置发送给客户端的响应的内容类型。

  • 给定的内容类型可以包括字符编码规范,例如,

response.setContentType("text/html;charset=UTF-8");

  • 如果在调用此方法之前调用此方法,则仅从给定的内容类型设置响应的字符编码getWriter

  • 可以重复调用此方法来更改内容类型和字符编码。

  • 如果在响应提交后调用此方法无效。getWriter如果在调用后或响应提交后调用它,则不会设置响应的字符编码。

  • 如果协议提供了这样做的方法,容器必须将用于 servlet 响应的编写器的内容类型和字符编码传达给客户端。在 HTTP 的情况下,使用 Content-Type 标头。

于 2013-12-31T10:25:17.863 回答
6

这意味着您要发送给客户端的响应类型,一些内容类型,例如:

 res.setContentType("image/gif");
 res.setContentType("application/pdf");
 res.setContentType("application/zip");
于 2013-01-12T06:58:23.987 回答
3

您必须告诉浏览器您要发回的内容,以便浏览器可以采取适当的措施,例如在收到 PDF 时启动 PDF 查看器或启动视频播放器来播放视频文件,如果内容类型为则渲染 HTML简单的 html 响应,将响应的字节保存为下载的文件等。

一些常见的 MIME 类型是 text/html、application/pdf、video/quicktime、application/java、image/jpeg、application/jar 等

在您的情况下,由于您向客户端发送 HTML 响应,因此您必须将内容类型设置为 text/html

于 2017-04-02T03:27:52.513 回答
2
response.setContentType("text/html");

上面的代码将包含在“HTTP 响应”中,以告知浏览器响应的格式,以便浏览器可以解释它。

于 2013-01-17T06:03:34.420 回答
1

它是其中一种MIME类型,在这种情况下,您是响应标头MIME类型,text/html这意味着它显示 html 类型。它是浏览器的信息。您还可以设置其他类型以显示 excel、zip 等。MIME Type有关详细信息,请参阅

于 2013-01-12T06:51:31.223 回答