public void addCookie(Cookie cookie)
将指定 cookie 添加到响应。可多次调用此方法设置一个以上的 cookie。
cookie 要返回给客户端的 Cookie
public void addDateHeader(String name, long date)
用给定名称和日期值添加响应头。该日期根据距历元时间的毫秒数指定。此方法允许响应头有多个值。
name 要设置的头的名称
date 附加的日期值
public void addHeader(String name, String value)
用给定名称和值添加响应头。此方法允许响应头有多个值。
name 头的名称
value 附加的头值
public void addIntHeader(String name, int value)
用给定名称和整数值添加响应头。此方法允许响应头有多个值。
name 头的名称
value 指定的整数值
public boolean containsHeader(String name)
返回一个 boolean 值,指示是否已经设置指定的响应头。
name 头名称
return 如果已经设置指定的响应头,则返回 true;否则返回 false
public String encodeRedirectURL(String url)
对指定 URL 进行编码,以便在 sendRedirect 方法中使用它,如果不需要编码,则返回未更改的 URL。此方法的实现包含可以确定Session ID 是否需要在 URL 中编码的逻辑。因为进行此确定的规则可能不同于用来确定是否对普通链接进行编码的规则,所以此方法与 encodeURL 方法是分开的。 发送到 HttpServletResponse.sendRedirect 方法的所有 URL 都应该通过此方法运行。否则,URL 重写不能用于不支持 cookie 的浏览器。
url 要编码的 URL。
return 如果需要编码,则返回编码的 URL;否则返回未更改的 URL。
public void sendError(int sc, String msg) throws java.io.IOException
使用指定状态将错误响应发送到客户端。默认情况下,服务器将创建类似 HTML 格式的服务器错误页面的响应,该页面包含指定消息,内容类型设置为 "text/html",并且保持 cookie 和其他头不变。 如果已经对 Web 应用程序进行了对应于传入状态代码的错误页面声明,则将优先处理建议的 msg 参数。
如果已经提交了响应,则此方法抛出 IllegalStateException。使用此方法后,响应应该被视为已经被提交,不能再写入。
sc 错误状态代码
msg 描述性消息
Throws java.io.IOException: 如果发生输入或输出异常
Throws IllegalStateException: 如果提交了响应
public void sendError(int sc) throws java.io.IOException
使用指定状态代码并清除缓冲区将错误响应发送到客户端。
如果已经提交了响应,则此方法抛出 IllegalStateException。使用此方法后,响应应该被视为已经被提交,不能再写入。
sc 错误状态代码
Throws java.io.IOException: 如果发生输入或输出异常
Throws IllegalStateException: 如果在此方法调用之前提交了响应
public void sendRedirect(String location) throws java.io.IOException
使用指定重定向位置 URL 将临时重定向响应发送到客户端。此方法可以接受相对 URL;servlet 容器必须在将响应发送到客户端之前将相对 URL 转换为绝对 URL。如果位置是相对的,没有前导 ‘/‘,则容器将相对于当前请求 URI 对其进行解释。如果位置是相对的,有一个前导 ‘/‘,则容器将相对于 servlet 容器根对其进行解释。如果已经提交了响应,则此方法抛出 IllegalStateException。使用此方法后,响应应该被视为已经被提交,不能再写入。
location 重定向位置 URL
Throws java.io.IOException: 如果发生输入或输出异常
Throws IllegalStateException: 如果提交了响应,或者部分 URL 是给定的且无法将其转换为有效 URL
public void setDateHeader(String name, long date)
用给定名称和日期值设置响应头。该日期根据距历元时间的毫秒数指定。如果已经设置了头,则新值将重写以前的值。containsHeader 方法可用于测试在设置其值之前头是否存在。
name 要设置的头的名称
date 指定的日期值
public void setHeader(String name, String value)
用给定名称和值设置响应头。如果已经设置了头,则新值将重写以前的值。containsHeader 方法可用于测试在设置其值之前头是否存在。
name 头的名称
value 头值,
public void setIntHeader(String name, int value) Posts (0)
用给定名称和整数值设置响应头。如果已经设置了头,则新值将重写以前的值。containsHeader 方法可用于测试在设置其值之前头是否存在。
name 头的名称
value 指定的整数值
public void setStatus(int sc)
设置此响应的状态代码。此方法用于设置没有错误时的返回状态代码(例如状态代码 SC_OK 或 SC_MOVED_TEMPORARILY)。如果有错误,并且调用者希望调用 Web 应用程序中定义的错误页面,则应改用 sendError 方法。
容器清除缓冲区,设置 Location 头,并保留 cookie 和其他头。
sc 状态代码
HttpServletResponse继承ServletResponse的方法:
public void flushBuffer() throws java.io.IOException
强行将缓冲区中的所有内容写入客户端。调用此方法会自动提交响应,这意味着将编写状态代码和头。
public void reset()
清除缓冲区中存在的所有数据以及状态代码和头。如果已提交响应,则此方法将抛出 IllegalStateException。
Throws IllegalStateException:已提交响应异常
public void resetBuffer()
清除响应中底层缓冲区的内容,而不清除头或状态代码。如果已提交响应,则此方法将抛出 IllegalStateException。
public void setBufferSize(int size)
设置响应正文的首选缓冲区大小。servlet 容器将使用至少与所请求大小一样大的缓冲区。可使用 getBufferSize 获得使用的实际缓冲区大小。
较大的缓冲区允许在实际发送任何东西之前编写更多的内容,这为 servlet 提供了更多时间来设置适当的状态代码和头。较小的缓冲区会减少服务器内存负载,并允许客户端更快地开始接收数据。必须在编写任何响应正文内容之前调用此方法;如果已经编写了内容或者已经提交了响应对象,则此方法将抛出 IllegalStateException。
size 首选缓冲区大小
Throws IllegalStateException: 如果在已编写内容后调用此方法
public int getBufferSize()
返回用于该响应的实际缓冲区大小。如果未使用任何缓冲,则此方法返回 0。
return 使用的实际缓冲区大小
public void setCharacterEncoding(String charset)
设置将发送到客户端的响应的字符编码 (MIME charset),例如,将它设置为 UTF-8。如果已通过 #setContentType 或 #setLocale 设置了字符编码,则此方法将重写该字符编码。用 text/html 的 String 调用 #setContentType 并用 UTF-8 的 String 调用此方法等效于用 text/html; charset=UTF-8 的 String 调用 setContentType。
可重复调用此方法来更改字符编码。如果在已调用 getWriter 之后或者在已提交响应之后调用此方法,则此方法没有任何效果。
public String getCharacterEncoding()
返回用于此响应中发送的正文的字符编码 (MIME charset) 名称。可能已使用 #setCharacterEncoding 或 #setContentType 方法显式指定字符编码,或使用 #setLocale 方法隐式指定它。显式指定优先于隐式指定。在已调用 getWriter 之后或者在已提交响应之后调用这些方法不会对字符编码产生任何影响。如果未指定字符编码,则返回 ISO-8859-1。
return 指定字符编码名称的 String,例如 UTF-8
public boolean isCommitted()
返回指示响应是否已提交的 boolean 值。已提交的响应已将其状态代码和头编写好。
return 指示响应是否已提交的 boolean 值
public void setContentLength(int len)
设置 HTTP servlet 中响应的内容正文的长度,此方法设置 HTTP Content-Length 头。
len 指定将返回到客户端的内容长度的整数;设置 Content-Length 头
public void setContentType(String type)
设置将发送到客户端的响应的内容类型,如果该响应尚未提交。给定内容类型可能包含字符编码规范,例如 text/html;charset=UTF-8。如果在调用 getWriter 之前调用此方法,则只根据给定内容类型设置响应的字符编码。
可重复调用此方法来更改内容类型和字符编码。如果在已提交响应之后调用此方法,则此方法没有任何效果。如果在已调用 getWriter 之后或者在已提交响应之后调用此方法,则该方法不会设置响应的字符编码。
type 指定内容的 MIME 类型的 String
public String getContentType()
返回用于此响应中发送的 MIME 正文的内容类型。必须在提交响应之前已使用 #setContentType 指定适当的内容类型。如果未指定内容类型,则此方法返回 null。如果已指定内容类型,并且已经如 #getCharacterEncoding 中所述显式或隐式指定了字符编码或者已调用 #getWriter,则返回的字符串中将包含 charset 参数。如果未指定字符编码,则省略 charset 参数。
return 指定内容类型的 String,例如 text/html; charset=UTF-8,或者返回 null
public void setLocale(java.util.Locale loc)
设置响应的语言环境,如果该响应尚未提交。如果尚未使用 #setContentType 或 #setCharacterEncoding 显式设置字符编码、尚未调用 getWriter,并且响应尚未提交,则此方法还将设置适合该语言环境的响应的字符编码。如果部署描述符包含 locale-encoding-mapping-list 元素,并且该元素提供了给定语言环境的映射,则使用该映射。否则,从语言环境到字符编码的映射是与容器相关的。可重复调用此方法来更改语言环境和字符编码。如果在已提交响应之后调用该方法,则此方法没有任何效果。如果在已使用 charset 规范调用 #setContentType 之后、在已调用 #setCharacterEncoding 之后、在已调用 getWriter 之后,或者在已提交响应之后调用此方法,则此方法不会设置响应的字符编码。
loc 响应的语言环境
public java.util.Locale getLocale()
返回使用 #setLocale 方法指定的此响应的语言环境。在已提交响应后调用 setLocale 没有任何效果。如果未指定任何语言环境,则返回容器的默认语言环境。
public ServletOutputStream getOutputStream() throws java.io.IOException
返回适用于在响应中编写二进制数据的 ServletOutputStream。servlet 容器不会编码二进制数据。对 ServletOutputStream 调用 flush() 将提交响应。可调用此方法或 #getWriter 编写正文,而不是两种方法都调用。
return 用于编写二进制数据的 ServletOutputStream
Throws IllegalStateException: 如果已对此响应调用 getWriter 方法
Throws java.io.IOException: 如果发生输入或输出异常
public java.io.PrintWriter getWriter() throws java.io.IOException
返回可将字符文本发送到客户端的 PrintWriter 对象。PrintWriter 使用 #getCharacterEncoding 返回的字符编码。如果未如 getCharacterEncoding 中所述指定响应的字符编码(即该方法只返回默认值 ISO-8859-1),则 getWriter 会将字符编码更新到 ISO-8859-1。 对 PrintWriter 调用 flush() 将提交响应。
可调用此方法或 #getOutputStream 编写正文,而不是两种方法都调用。
return 可将字符数据返回到客户端的 PrintWriter 对象。
Throws UnsupportedEncodingException: 如果无法使用getCharacterEncoding 返回的字符编码
Throws IllegalStateException: 如果已对此响应对象调用 getOutputStream 方法
Throws java.io.IOException: 如果发生输入或输出异常
响应消息头及示例:
Location: http://hi.baidu.com/wjy9/home 通知浏览器去访问另一个资源
Server:apache tomcat 说明服务器
Content-Encoding: gzip 通知浏览器数据的压缩格式
Content-Length: 80 通知浏览器发送数据的长度
Content-Language: zh-cn 通知浏览器语言环境
Content-Type: text/html; charset=GB2312 通知浏览器文件的格式和编码
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 告诉浏览器文件的修改时间
Refresh: 1;url= http://hi.baidu.com/wjy9/home 通知浏览器自动刷新(单位为秒)
Content-Disposition: attachment; filename=aaa.zip 通知浏览器以下载的方式打开资源
Set-Cookie:SS=Q0=5Lb_nQ; path=/search 发cookie
Expires: -1 禁止缓存的头字段
Cache-Control: no-cache 禁止缓存的头字段
Pragma: no-cache 禁止缓存的头字段(根据浏览器不同,使用不同方式,可全写)
Connection: close/Keep-Alive 连接状态
Date: Tue, 11 Jul 2000 18:23:51 GMT 系统时间