servlet中"response.setContentType("text/html")"的用法是什么?

gow*_*man 18 java servlets

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>");
      }
    }
Run Code Online (Sandbox Code Playgroud)

Dam*_*ver 18

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

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


(*)这里显而易见的是XHTML - 这是XML.如果它的内容类型为application/xml,则接收者应该将其视为XML.如果它被提供application/xhtml+xml,那么它应该被视为XHTML.

  • 我在哪里可以找到所有内容类型的列表?例如,如果我想返回一个布尔值,我是否必须将其设置为JSON对象然后相应地转换它(即使用GSON)? (2认同)

Ani*_*rni 13

来自JavaEE文档 ServletResponse#setContentType

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

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

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

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

  • 可以重复调用该方法以改变内容类型和字符编码.

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

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


小智 5

它意味着您要向客户端发送什么类型的响应,一些内容类型如:

 res.setContentType("image/gif");
 res.setContentType("application/pdf");
 res.setContentType("application/zip");
Run Code Online (Sandbox Code Playgroud)