ServletResponse接口

简述:

在Servlet接口的service(ServletReuqest req , ServletResponse res)方法中有一个ServletResponse类型的参数。Servlet通过ServletResponse对象来生成响应结果。当Servlet容器接收到客户端要求访问特定Servlet的请求时,容器会创建一个ServletResponse对象,并把它作为参数传给Servlet 的service()方法。

响应方法

在ServletResponse接口中定义了一系列与生成响应相关的方法。
1)setCharacterEncoding(String charset):设置响应正文的字符编码。响应正文的默认字符编码为ISO-8859-1 .
2)setContentLength(int len):设置响应正文的长度。
3)setContentType(String type):设置响应正文的MIME类型。
4)getCharacterEncoding():返回响应正文的字符编码。
5)getContentType():返回响应正文的MIME类型。
6)setBufferSize(int size):设置用于存放响应正文数据的缓存区的大小。
7)getBufferSize():获得用于存放正文数据的缓存区的大小。
8)reset():清空缓存区内的正文数据,并且清空响应状态代码及响应头。
9)resetBuffer():仅仅清空缓存区内的正文数据,不清空响应状态代码及响应头。
10)flushBuffer():强制性地把缓存区内的响应正文数据发送到客户端。
11)isCommitted():返回一个boolean类型的值。如果为true,表示缓存区内的数据已经提交给客户,即数据已经发送到客户端。
12)getOutputStream():返回一个ServletOutputStream对象,Servlet用它来输出二进制的正文数据。
13)getWriter():返回一个PrintWriter对象,Servlet用它来输出字符串形式的正文数据。
补充:
ServletResponse中的响应正文的默认MIME类型为text/plain,即纯文本类型。
而HttpServletResponse中的响应正文的默认MIME类型为text/html,即HTML文档类型。

响应正文

Servlet通过ServletResponse对象主要产生HTTP响应结果的正文部分。
ServletResponse的getOutputStream()方法返回一个ServletOutputStream对象,Servlet可以利用ServletOutputStream来输出二进制的正文数据。
ServletResponse的getWriter()方法返回一个PrintWriter对象,Servlet可以利用PrintWriter来输出字符串形式的正文数据。
为了提高输出数据的效率,ServletOutputStream和PrintWriter先把数据写到缓存区内。当缓存区内的数据被提交到客户后,ServletResponse的isCommited()方法返回true。

缓存区

在以下几种情况下,缓存区内的数据会被提交给客户,即数据被发送到客户端:
1、当缓存区内的数据已满时,ServletOutputStream或PrintWriter会自动把缓存区内的数据发送给客户端,并且清空缓存区。
2、Servlet调用ServletResponse对象的flushBuffer()方法。
3、Servlet调用ServletOutputStream对象或PrintWriter对象的flush()或close()方法。
为了确保ServletOutputStream或PrintWriter输出的所有的数据都会被提供给客户,比较安全的做法是在所有的数据都输出完毕后,调用ServletOutputStream或PrintWriter的close()方法。

在ServletResponse接口的实现类中,如果要设置响应正文长度,MIME类型和字符编码,应该写到HTTP响应的头中。
需要注意的是,如果要设置响应正文的MIME类型和字符编码,必须先调用ServletResponse对象的setContentType()和setCharacterEncoding()方法,然后在调用ServletResponse的getOutputStream()或getWriter()方法,或者提交缓存区内的正文数据。只有满足这样的操作顺序,所做的设置才能生效。

HttpServletResponse接口

简述:

HttpServletResponse接口是ServletResponse的子接口,HttpServlet类的重载servcie()方法及doGet()和doPost()方法都有一个HttpServletResponse类型的参数:

 

protected void service(HttpServletRequest req,HttpServletResponse resp)

throws ServletException, IOException{........}

HttpServletResponse接口提供了与HTTP协议相关的一些方法,Servlet可通过这些方法来设置HTTP响应头或向客户端写Cookie。

HttpServletResponse接口的方法

1)addHeader(Stringname , String value):想HTTP响应头中加入一项内容。

2)sendError(intsc):向客户端发送一个代表特定错误的HTTP响应状态代码。

3)aendError(intsc , String msg):向客户端发送一个代表特定错误的HTTP响应状态码,并且发送具体的错误信息。

4)setHeader(String name , String value):设置HTTP响应头重的一项内容。如果在响应头中已经存在这项内容,那么原先所做的设置将被覆盖。

5)setStatus(int sc):设置HTTP响应的状态代码。

6)addCookie(Cookiecookie):向HTTP响应中加入一个Cookie。



Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐