总结一下response 对象的有三个作用:设置头信息,客户端跳转,cookie操作
一:设置头信息
头信息是指随着具体的内容一起提交到服务器端,或者从服务器端随着内容一起发送到客户端。在JSP中可以通过request对象,取得全部的头信息:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.util.*"%>
<%
Enumeration enu = request.getHeaderNames();
while(enu.hasMoreElements()){
String name = (String) enu.nextElement();
%>
<h3><%=name%>--------<%=request.getHeader(name)%></h3>
<%
}
%>
当然 用户可以自己定制头信息,最为常用的一个就是定时刷新。
<%@ page contentType="text/html;charset=GBK"%>
<%!
int temp = 0;
%>
<%
//设置每隔两秒刷新一次
response.setHeader("refresh","1");
%>
<h1><%=temp++%></h1>
定时刷新经过适当的设置,可以完成定时跳转功能,可以让一个页面经过多少秒之后跳转到其他的页面。
<%@ page contentType="text/html;charset=GBK"%>
<%
response.setHeader("refresh","2,URL=demo02.jsp")
%>
<h2>本页面2秒后跳回首页!</h2>
<h2>如果没有跳转,请按<a href="demo02.jsp">这里</a></h2>
注意HTTP本身也提供了这样的跳转操作,可以通过头信息的方式设置完成。
<META HTTP-EQUIV="refresh" CONTENT="2;URL=index.jsp">
<h2>本页面2秒后跳回首页!</h2>
<h2>如果没有跳转,请按<a href="demo02.jsp">这里</a></h2>
二:客户端跳转
在response对象中提供了专门的跳转执行,使用reponse.sendRedirect("hello.jsp?ref1=hell0")就可以完成。
两种跳转的区别:
服务器端跳转:<jsp:forward page="">
客户端跳转:response.sendRedirect() set Header();
总结:<jsp:forward page="">属于无条件跳转,只要执行到此语句之后则立刻进行跳转,它是可以传递request属性的,(对于一些资源必须在jsp:forward之前关闭)reponse跳转的特点:所有页面执行完后再进行跳转,是不能够传递request范围的属性(在本页面的任何地方都可关闭)。
三:Cookie操作
cookie属于一个单独的类,此类定义在:javax.servlet.http.*;
客户端在每次提交的时候都会将Cookie作为头信息一次行的提交过去,所以使用request的:
cookie.jsp
<%@ page contentType="text/html;charset=GBK"%>
<%
Cookie c1 = new Cookie("userName","zhanqiong");
Cookie c2 = new Cookie("password","123");
//通过response设置到客户端上去
response.addCookie(c1);
response.addCookie(c2);
%>
demo1.jsp
<%@ page contentType="text/html;charset=GBK"%>
<%
Cookie []c = request.getCookies();
for(int i=0;i<=c.length;i++){
%>
<h3><%=c[i].getName()%>-----------------<%=c[i].getValue()%></h3>
<%
}
%>
为了安全行的考虑,当浏览器关闭后,该cookie信息是要取消的。有时为了需要设置cookie的保存日期setMaxAge(200);
cookie一般保存在:c:\Documents and Settings\Administator\Cookies