JSP内置对象之response对象

JSP内置对象之response对象

作者:佚名 出处:IT专家网 2010-06-13 13:00

本文介绍JSP内置对象之response对象实现方法。

  response对象的作用是处理HTTP连接信息,如cookie、HTTP文件头信息等,它有很多功能是和request对象相匹配的。它的重要性相对不如request对象、application对象、session对象,该对象所实现的方法如下:

  1. void addCookie( Cookie cookie ) ;添加一个Cookie对象,保存客户端信息。当用户访问某个站点时,可以使用addCookie()方法添加一个Cookie对象,并将它发送到客户端,保存到客户端操作系统的某个特定目录下面,用来保存客户端的特定信息。当该用户再次访问同一个站点时,浏览器会自动将这个Cookie对象发送回服务端,调用request对象的getCookies()方法可以获得所有存在的Cookie对象,getCookies()方法的返回值是一个数组。Cookie对象对于不同的用户来说都是专有的。它的使用方法如下:


  <%  
  Cookie myCookie=new Cookie(“aName”,”aValue”); 
  Response.addCookie(myCookie); 
  %>

<%

  Cookie myCookie=new Cookie(“aName”,”aValue”);

  Response.addCookie(myCookie);

  %>

  或:


  <%  
  Cookie killMyCookie=new Cookie(“myCookie”,null); 
  killMyCookie.setMaxAge(0); 
  killMyCookie.setPath(“/”); 
  Response.addCookie(killMyCookie); 
  %>

<%

  Cookie killMyCookie=new Cookie(“myCookie”,null);

  killMyCookie.setMaxAge(0);

  killMyCookie.setPath(“/”);

  Response.addCookie(killMyCookie);

  %>

  2. void addDateHeader( String name, long value ) ;添加一个日期类型的HTTP头信息,覆盖同名的HTTP头信息。

  3. void addHeader( String name, String value ) ;添加一个HTTP头,覆盖同名的旧HTTP头。addHeader()方法的作用是添加HTTP文件头信息,这些信息将会传到客户端,发送特定的HTTP文件头信息,可以控制客户端和服务器端的连接,例如,可以让客户端的浏览器每隔一分钟就刷新当前页面。如果同名的HTTP头文件已经存在,那么原来的HTTP文件头的值会被覆盖。

  它的使用方法如下:

  1、 利用response对象禁止使用代理服务器缓存


  <%  
  //HTTP 1.1 
  response.setHeader(“Cache-Control”, “no-store”); 
  //HTTP 1.0 
  response.setHeader(“Pragma”, “no-cache”); 
  //防止在代理服务器上使用缓冲 
  response.setDateHeader(“Expires”, 0); 
  %>

<%

  //HTTP 1.1

  response.setHeader(“Cache-Control”, “no-store”);

  //HTTP 1.0

  response.setHeader(“Pragma”, “no-cache”);

  //防止在代理服务器上使用缓冲

  response.setDateHeader(“Expires”, 0);

  %>

  2、 利用response对象设定应答的MIME类型及附件


  <%  
  response.setContentType(“application/pdf”); 
  response.setHeader(“Content-Disposition”, 
  “attachment;filename=\”syntax.pdf\””); 
  %>

<%

  response.setContentType(“application/pdf”);

  response.setHeader(“Content-Disposition”,

  “attachment;filename=\”syntax.pdf\””);

  %>

  4. void addIntHeader( String name, int value ) ;添加一个整型的HTTP头,覆盖同名的旧HTTP头。

  5. boolean containsHeader( String name ) ;判断指定的HTTP头是否存在。

  6. String encodeRedirectURL( String url ) ;对sendRedirect()方法使用的URL进行编码。

  7. String encodeURL( String url ) ;将URL予以编码,回传包含session ID的URL。

  8. void flushBuffer() ;强制把当前缓冲区的内容发送到客户端。

  9. int getBufferSize() ;取得以kb为单位的缓冲区大小。

  10. String getCharacterEncoding() ;获取响应的字符编码格式。

  11. String getContentType() ;获取响应的类型。

  12. Locale getLocale() ;获取响应的Locale对象。

  13. ServletOutputStream getOutputStream() ;返回客户端的输出流对象。

  14. PrintWriter getWriter() ;获取输出流对应的writer对象。

  15. boolean isCommitted() ;判断服务器端是否已经将数据输出到客户端。

  16. void reset() ;清空buffer中的所有内容。

  17. void resetBuffer() ;情况buffer中所有的内容,但是保留HTTP头和状态信息。

  18. void sendError( int xc, String msg ) ; void sendError( int xc ) ;

  发送错误,包括状态码和错误信息,例如505:服务器内部错误,404:网页找不到的错误等。它的使用方法如下:


  <% 
  response. sendError(response.SC_NO_CONTENT);// SC_NO_CONTENT为HTTP状态码 
  %>

<%

  response. sendError(response.SC_NO_CONTENT);// SC_NO_CONTENT为HTTP状态码

  %>

  19. void sendRedirect( String locationg ) ;把响应发送到另外一个位置进行处理。它的功能和动作指令的功能一模一样,就是向目标程序传递HTTP参数不是很方便。在使用sendRedirect()方法前,必须要确保JSP程序没有任何可见的输出被送往客户端。这和动作指令的使用条件是一样的。它的使用方法如下:


  <% 
  response. sendError(response.SC_NO_CONTENT);// SC_NO_CONTENT为HTTP状态码 
  %>

<%

  response. sendRedirect(“http://127.0.0.1:8080/test/error.html”);

  %>

  上面的JSP代码段使当前页面重定向到网址:http://127.0.0.1:8080/test/error.html。

  还可以使用response对象重定向方法传送程序文件:


  <%  
  response. sendRedirect(“http://127.0.0.1:8080/test/ virus.exe”); 
  %>

<%

  response. sendRedirect(“http://127.0.0.1:8080/test/ virus.exe”);

  %>

  上面的JSP代码段使得当前页面定向到地址:http://127.0.0.1:8080/test/ virus.exe。这时候,客户端会弹出一个对话框,提示用户是否需要下载virus.exe程序,如果用户确认,那么浏览器会将virus.exe程序下载,并保存在用户指定的目录下面。


  <%  
  response. setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); 
  String newLocn=”/newpath/index.html”; 
  response.setHeader(“Location”, newLocn); 
  %>

<%

  response. setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);

  String newLocn=”/newpath/index.html”;

  response.setHeader(“Location”, newLocn);

  %>

  上面的JSP代码段同样实现了重定向的功能,不过没有使用sendRedirect()方法,而是使用setHeader()方法,向客户端的浏览器发送HTTP文件头——Location,浏览器接到这个HTTP文件头以后,就会自动打开Location所指定的新的URL地址。这也就是重定向了当前网页了。

  20. void setBufferSize( int size ) ;设置以kb为单位的缓冲区大小。

  21. void setCharacterEncoding( String charset ) ;设置响应使用的字符编码格式。

  22. void setContentLength( int length ) ;设置响应的BODY长度。

  23. void setContentType( String type ) ;设置响应的类型。

  24. void setDateHeader( String name, long value ) ;设置指定名称的Data类型的HTTP头的值。

  25. void setHeader( String name, String value ) ;设置指定名称的HTTP头的值。

  26. void setIntHeader( String name, int value ) ;设置指定名称的int类型的HTTP头的值。

  27. void setStatus( int xc ) ;设置响应状态码,新值会覆盖当前值。

你可能感兴趣的:(JSP内置对象之response对象)