servlet 中“response.setContentType("text/html")”的用途是啥

Posted

技术标签:

【中文标题】servlet 中“response.setContentType("text/html")”的用途是啥【英文标题】:what is the use of "response.setContentType("text/html")" in servletservlet 中“response.setContentType("text/html")”的用途是什么 【发布时间】:2012-12-26 19:04:06 【问题描述】:
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>");
      
    

【问题讨论】:

它基本上告诉客户端(网络浏览器)它是什么内容类型,以便它知道如何处理它。应该注意的是,到目前为止显示的代码被认为是不好的做法。 HTML 代码属于 JSP 文件。另见***.com/tags/servlets/info 【参考方案1】:
response.setContentType("text/html");

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

除了告诉 OP 他们必须完成什么之外,您实际上应该解释如何做到这一点(通常,这意味着使用代码。)此外,这篇文章已经有五个答案,其中一个是接受,并且是从四年前开始的。因此,我建议您尝试回答较新的问题。【参考方案3】:

来自 JavaEE 文档ServletResponse#setContentType

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

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

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

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

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

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

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

【讨论】:

如果没有明确指定,关于默认内容类型和字符编码的任何想法?【参考方案4】:

它是MIME 类型之一,在这种情况下,您将标题MIME 类型响应text/html 这意味着它显示html 类型。它是浏览器的信息。您还可以设置其他类型以显示 excel、zip 等。请参阅MIME Type 了解更多信息

【讨论】:

【参考方案5】:

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

 res.setContentType("image/gif");
 res.setContentType("application/pdf");
 res.setContentType("application/zip");

【讨论】:

【参考方案6】:

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

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


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

【讨论】:

在哪里可以找到所有内容类型的列表?例如,如果我想返回一个布尔值,我是否必须将其设置为 JSON 对象,然后进行相应的转换(即使用 GSON)? @tccpg288 这里:iana.org/assignments/media-types/media-types.xhtml 和相关问题:***.com/questions/23714383/…

以上是关于servlet 中“response.setContentType("text/html")”的用途是啥的主要内容,如果未能解决你的问题,请参考以下文章

servlet生命周期

javaWeb中servlet开发——Servlet生命周期

servlet中能够相互传值吗

Servlet 工程 web.xml 中的 servlet 和 servlet-mapping 标签

Servlet基础

在servlet中怎样上传文件?