小言_互联网的博客

JavaWeb核心技术系列教程(09)——HttpServletResponse对象详解

340人阅读  评论(0)

C语言自学完备手册(33篇)

Android多分辨率适配框架

JavaWeb核心技术系列教程

HTML5前端开发实战系列教程

MySQL数据库实操教程(35篇图文版)

推翻自己和过往——自定义View系列教程(10篇)

走出思维困境,踏上精进之路——Android开发进阶精华录

讲给Android程序员看的前端系列教程(40集免费视频教程+源码)


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

Servlet最核心的工作就是处理客户端请求并向客户端作出响应。为此,针对Servlet的每次HTTP请求,Web服务器在调用service (HttpServletRequest request,HttpServletResponse response)方法之前,都会创建HttpServletRequest 和HttpServletResponse。其中,HttpServletRequest用于封装HTTP请求消息,简称request对象;HttpServletResponse用于封装HTTP响应消息, 简称response对象。需要注意的是,在Web服务器运行阶段每个Servlet都只会创建一个实例对象;但是,对于每次HTTP请求Web服务器都会在调用service (HttpServletRequest request,HttpServletResponse response)方法时重新创建request对象response对象。

HttpServletResponse概述

HttpServletResponse接口继承自 ServletResponse专门用于封装HTTP响应消息。由于HTTP响应消息分为状态行、响应消息头、响应消息体(实体信息)三部分;因此,在HttpServletResponse接口中对应地定义了向客户端发送响应状态码、发送响应消息头、发送响应消息体(实体信息)的方法。在此,我们分别对这些方法进行详细介绍。

HttpServletResponse中与状态码相关的方法

当Servlet向客户端回送响应消息时,需要在响应消息中设置状态码。在HttpServletResponse接口中与状态码相关的常用方法如下:

public void setStatus(int sc)

该方法用于设置HTTP响应消息的状态码并生成响应状态行。正常情况下,Web服务器会默认产生状态码为200的状态行。

public void sendError(int sc) throws IOException

该方法用于发送表示错误信息的状态码。例如,404状态码表示找不到客户端请求的 资源。

public void sendError(int sc, String msg) throws IOException

该方法用于发送表示错误信息的状态码。例如,404状态码表示找不到客户端请求的 资源。除了发送状态码外,该方法还可附加用于提示说明的文本信息,该文本信息将包含在发送给客户端的正文内容中。

常用响应状态码

HttpServletResponse 接口中定义了一系列响应状态码常量,常用的如下:

public static final int SC_NOT_FOUND = 404
该常量表示未找到所请求的资源。

public static final int SC_OK = 200
该常量表示请求成功。

public static final int SC_INTERNAL_SERVER_ERROR = 500
该常量服务器内部发生错误。

public static final int SC_BAD_REQUEST = 400
该常用表示客户端发送的请求语法有误。

HttpServletResponse中与响应消息头相关的方法

当Servlet向客户端回送响应消息时,需要设置响应消息头。在HttpServletResponse接口中与设置响应消息头相关的常用方法如下:

public void addHeader(String name, String value)
public void setHeader(String name, String value)

这两个方法都是用来设置HTTP的响应头字段。其中, 参数name用于指定响应头字段的名称,参数value用于指定响应头字段的值。两者不同的是,addHeader( )方法可增加同名的响应头字段,而setHeader( )方法会覆盖同名的头字段。

public void addIntHeader(String name, int value)
public void setIntHeader(String name, int value)

这两个方法专门用于设置包含整数值的响应头。避免使用addHeader( )方法与setHeader( )方法时需要将int类型的设置值转换为String类型的麻烦。

public void setContentLength(int len)

该方法用于设置Content-Length响应头字段的值表示响应消息的实体内容的大小,单位为字节。

public void setContentType(String type)

该方法用于设置Content-Type响应头字段的值表示响应消息的实体内容的MIME类型。例如,假若发送到客户端的内容是jpeg格式的图像数据,就需要将Content-Type响应头字段的值设置为“image/jpeg”即setContentType(“image/jpeg”)。请注意:假若响应的内容为文本,那么setContentType( )方法可在设置MIME类型的同时还可设置字符编码;例如:“text/html; charset = UTF-8”即setContentType(“text/html; charset = UTF-8”);

public void setCharacterEncoding(String charset)

该方法用于设置Content-Type响应头字段中的的字符集编码部分,表示响应正文的编码方式。

以上就是HttpServletResponse接口中与设置响应消息头相关的常用方法。当然了,它们还有对应的获取(get)方法;在此,不再赘述。

HttpServletResponse中与响应消息体相关的方法

当Servlet向客户端回送响应消息时,需要传递响应消息体。在HttpServletResponse接口中与响应消息体相关的常用方法如下:

public ServletOutputStream getOutputStream( ) throws IOException

该方法返回字节输出流对象为ServletOutputStream它是OutputStream的子类,用于输出二进制格式的响应正文。

public PrintWriter getWriter( ) throws IOException

该方法返回字符输出流对象PrintWriter它是Writer的子类,用于输出字符格式的响应正文。

注意事项

虽然通过getOutputStream( )方法和getWriter( )方法获取到的返回对象都可以发送响 应消息体,但是,它们之间互相排斥,不可同时使用,否则会发生IllegalStateException异常。也就是说:要么使用ServletOutputStream发送响应,要么使用PrintWriter发送响应,不能同时使用。


转载:https://blog.csdn.net/lfdfhl/article/details/101446204
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场