日期:2014-05-16  浏览次数:20360 次

JSP学习笔记之response对象

response对象表示服务器端对客户端的回应,response本身是HttpServletResponse的对象,HttpServletResponse对象本身也是ServletResponse对象的子接口,这点与reqeust是一样的

response中也有很多用法,最长用的有设置头信息、跳转、Cookie,其主要方法有:

public void  setHeader(java.lang.String  name, java.lang.String  value)   ---设置头信息的名字和内容

public void sendRedirect(java.lang.String location) throws java.io.IOException  ----跳转,由一个页面跳往另外一个页面

public void addCookie(Cookie  cookie)  ---向客户端加入cookie

public void setContentType(java.lang.String type) ----设置内容的返回类型



头信息:随着具体的内容一起提交到服务器端,或者从服务器端随内容一起发到客户端上来,在jsp中可以使用request对象的方法可以取出头信息

取出全部头信息内容:public java.util.Enumeration getHeaderNames()

取得每一个头信息内容:public java.lang.String getHeader( java.lang.String name)

看如下实例:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page contentType="text/html; charset=GBK" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'header_demo.jsp' starting page</title>
  </head>
  <body>
  <%
  	//取得全部头信息
  	Enumeration enu = request.getHeaderNames();
  	while(enu.hasMoreElements()){
  		String name = (String)enu.nextElement();
  %>
  		<h3><%=name %>----><%=request.getHeader(name) %></h3>
  <%
  	}
  %>
  </body>
</html>
输入结果为:

accept---->*/*
referer---->http://localhost:933/javaweb/header/
accept-language---->zh-cn
ua-cpu---->x86
accept-encoding---->gzip, deflate
user-agent---->Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; QDesk 2.3.1192.202; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)
host---->localhost:933
connection---->Keep-Alive
cookie---->JSESSIONID=227FD1BC57565FA8C959860E99A4488F

以上的头信息属于http自己提交过的,但是用户也可以手工进行头信息的设置,回应给客户端,但是头信息的内容还是比较多的,用户较多的就是定时刷新:

response.setHeader("refresh","2");//每隔两秒自动刷新页面一次

经常见到网站上有过几秒后就会跳转页面的现象:这种跳转成为服务器端的跳转,页面的地址会发生变化

response.setHeader("refresh","3;URL=../emp.jsp");//三秒后自动刷新并跳转到新的页面上去

在HTTP里面也可以实现这样的跳转,也是在头部信息完成的:

 <head>
    <title>复杂表单的提交</title>
    <meta http-equiv="refresh" CONTENT="2; URL=../emp.jsp">
  </head> 

客户端的跳转:以上都是服务器端的跳转(response.setHeader("refresh","5;URL=demo.jsp")),诸如此类。在客户端的跳转中我们使用response.sendRedirect()就可以完成

response.sendRedirect("demo01.jsp");

此种跳转依然可以使用重写地址的方式向跳转页传递参数:

response.sendRedirect("demo01.jsp?ref=helloword");

接收也面依然使用request.getParameter()方法接收


两种跳转的区别:

服务器端的跳转:<jsp:forward   page="  " />  无条件跳转,只要语句执行到此处就会跳转,而且可以传递ruquest参数

客户端的跳转:response.setHeader("  ")      reseponse.sendRedirect( "  ")  所有页面执行完成之后在进行跳转,不能传递request范围的参数



COOKIE:是服务器端保存在客户端的一组数据,安全性较差,在JSP中,cookie属于单独的一个类,定义在javax.servlet.http.*

Cookie类的定义:   public class Cookie extends  java.lang.Ojbect  implemnets java.lang.Cloneable

Cookie类的主要方法:

public Cookie (String name,String value):Cookie的构造方法,实例化Cookie对象,传入名称和内容

public java.lang.String   getName()  :取得Cookie的名字

public void setValue(java.lang.String   newValue)  :修改内容

pubilc void setMaxAge(int expiry):Cookie的最大保存时间