2.1.2 ServletRequest和ServletResponse(2)
返回请求使用的协议的名字和版本,例如:HTTP/1.1。
public java.io.BufferedReader getReader() throws java.io.IOException |
返回BufferedReader对象,以字符数据方式读取请求正文。
public java.lang.String getRemoteAddr() |
返回发送请求的客户端或者最后一个代理服务器的IP地址。
public java.lang.String getRemoteHost() |
返回发送请求的客户端或者最后一个代理服务器的完整限定名。
public int getRemotePort() |
返回发送请求的客户端或者最后一个代理服务器的IP源端口,这个方法是在Servlet 2.4规范中新增的方法。
public RequestDispatcher getRequestDispatcher(java.lang.String path) |
返回RequestDispatcher对象,作为path所定位的资源的封装。
public java.lang.String getServerName() |
返回请求发送到的服务器的主机名。
public int getServerPort() |
返回请求发送到的服务器的端口号。
public void setCharacterEncoding (java.lang.String env) throws java.io.Unsupported EncodingException |
覆盖在请求正文中所使用的字符编码的名字。
下面我们看一下ServletResponse接口中的常用方法:
public void flushBuffer() throws java.io.IOException |
强制把任何在缓存中的内容发送到客户端。
public int getBufferSize() |
返回实际用于响应的缓存的大小。如果没有使用缓存,这个方法将返回0。
public java.lang.String getCharacterEncoding() |
返回在响应中发送的正文所使用的字符编码(MIME字符集)。
public java.lang.String getContentType() |
返回在响应中发送的正文所使用的MIME类型。
public ServletOutputStream getOutputStream() throws java.io.IOException |
返回ServletOutputStream对象,用于在响应中写入二进制数据。javax.servlet. ServletOutputStream是一个抽象类,继承自java.io.OutputStream。
public java.io.PrintWriter getWriter() throws java.io.IOException |
返回PrintWriter对象,用于发送字符文本到客户端。PrintWriter对象使用getCharacterEncoding()方法返回的字符编码。如果没有指定响应的字符编码方式,默认将使用ISO-8859-1。
public boolean isCommitted() |
返回一个布尔值,指示是否已经提交了响应。
清除在缓存中的任何数据,包括状态代码和消息报头。如果响应已经被提交,这个方法将抛出IllegalStateException异常。
public void resetBuffer() |
清除在缓存中的响应内容,保留状态代码和消息报头。如果响应已经被提交,这个方法将抛出IllegalStateException异常。
public void setBufferSize(int size) |
设置响应正文的缓存大小。Servlet容器将使用一个缓存,其大小至少是请求的尺寸大小。这个方法必须在响应正文被写入之前调用,如果内容已经被写入或者响应对象已经被提交,这个方法将抛出IllegalStateException异常。
public void setCharacterEncoding(java.lang.String charset) |
设置发送到客户端的响应的字符编码,例如,UTF-8。
public void setContentLength(int len) |
对于HTTP Servlet,在响应中,设置内容正文的长度,这个方法设置HTTP Content-Length实体报头。
public void setContentType(java.lang.String type) |
设置要发送到客户端的响应的内容类型,此时响应应该还没有提交。给出的内容类型可以包括字符编码说明,例如:text/html;charset=UTF-8。如果这个方法在getWriter()方法被调用之前调用,那么响应的字符编码将仅从给出的内容类型中设置。这个方法如果在getWriter()方法被调用之后或者在响应被提交之后调用,将不会设置响应的字符编码。在使用HTTP协议的情况中,这个方法设置Content-Type实体报头。
细心的读者可能注意到了,在上面所列举的方法中,有的可能会抛出IllegalStateException异常,然而在函数声明时,却没有声明抛出此异常,这是为什么呢?java.lang.IllegalStateException是java.lang.RuntimeException的子类。我们知道对于RuntimeException及其派生的异常是由Java运行系统自动抛出并自动处理,不需要我们去捕获,所以也就不需要在函数声明时声明抛出异常了。
上面所列的方法,读者不需要将它们都记下来,只要大致看一下,有一个初步的印象就可以了。关键是要理解请求和响应对象能够提供哪些方法,读者可以从客户端与服务器端的交互过程来思考,想想哪些信息是需要获取到的。在Servlet中,用请求对象表示的是什么信息,用响应对象来做什么,哪些信息应该是从请求对象中得到,哪些信息应该是用响应对象来设置。只要理解了交互的过程及请求对象和响应对象所起的作用,当我们需要用到某个方法时,就可以在API文档中进行查找,用的次数多了,这些方法自然也就记住了。