response对象包含了从动态页面返回给客户的所有信息。它指向一个隐含对象,该对象是协议有关的javax.servlet.ServletResponse的子类型。在HTTP协议中,隐含对象具有javax.servlet.http.HttpServletResponse类型。而out对象在动态页面中的所有数据都是使用javax.servlet.jsp.JspWriter对象编写的,该对象是通过out隐含对象来引用的。下面我们来详细学习response对象和out对象。
HttpServletResponse对象提供了一个Java接口,以设置HTTP响应的各个部分。HttpServletResponse对象具有页面作用域,这意味着它只在JSP页面内有效,只要_jspService方法返回,响应就会超出作用域。与request对象不同,request对象是生成的服务器程序的_jspService方法的一个形参。下面这段代码取自Tomcat容器所生成的服务器程序,其中显示了这个参数。
public void_jspService(HttpServletRequest request,HttpServletResponse response)
throws IOException,servletException
下面我们来学习response对象的方法,其常用方法如表5-3所示。
表 5-3 response对象常用方法
|
方法特征 |
用法 |
|
addCookie(Cookie cookie) |
添加1个Cookie对象,用来保存客户端的用户信息 |
|
addHeader(String name,String value) |
添加HTTP文件头,该header将会传到客户端,若同名的header存在,原来的header会被覆盖 |
|
containsHeader(String name) |
判断指定名字的HTTP文件头是否存在并返回布尔值 |
|
sendError(int sc) |
向客户端发送错误信息,如:505:服务器内部错误;404:网页找不到错误 |
|
setHeader(String name,String value) |
设定指定名字的HTTP文件头的值,若该值存在,它将会被新值覆盖 |
|
Int getBufferSize() |
返回响应所使用的实际缓冲区大小,如果没有使用缓冲区,则该方法返回0 |
|
Void reset() |
清除缓冲区中存在的任何数据,同时清除状态码和报头 |
|
Void setBufferSize(int size) |
为响应的主体设置首选的缓冲区大小 |
|
Boolean isCommitted() |
返回一个布尔值,表示响应是否已经提交;提交的响应已经写入了状态码和报头 |
|
Void flushBuffer() |
强制缓冲区中的任何内容写入客户 |
|
addDateHeader(String name,long date) |
使用给定的名称和日期值添加一个响应报头。日期是根据从新纪元开始的毫秒指定的 |
在request对象中提供了7种服务,而在response对象中也提供3种,其内容如下: