讲给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