您的位置:首页 > Web前端 > JavaScript

JSP response的使用

2016-05-20 00:00 453 查看
response 表示服务器端对客户端的回应。

response最常用的三种操作是:设置头信息,跳转,Cookie

response中的主要方法:

No方法名描述
1Public void setHeader(String name,String value)设置头信息的名字和内容
2Public void sendRedirect(String location )throws IOException跳转,由一个页面跳转到另外一个页面
3Public void addCookie(Cookie cookie)向客户端加入Cookie
4Public void setContentType(String type)设置内容的返回类型
##1.头信息

###1.1 什么是头信息

头信息就是随着具体的内容一起提交到服务器端,或者从服务器端随着内容一起发送到客户端上来的。

当然,在JSP中可以直接通过request对象,取得全部的头信息。

取得全部头信息的名字:

public java.util.Enumeration getHeaderNames()

取得每一个头信息的内容:

public String getHeader(String name)

例子:

<%@page contentType="text/html;charset=gbk"%>
<%@page import="java.util.*"%>
<%
//取得全部的头信息名称
Enumeration e = request.getHeaderNames();
while(e.hasMoreElements()){
String name=(String)e.nextElement();
%>
<h2>
<%=name%>=>> <%=request.getHeader(name)%>
</h2>
<%
}
%>

###1.2 设置头信息

以上的头信息属于HTTP自己提交过的,但是用户也可以自己手工进行头信息的设置,回应给客户端,但是因为头信息非常多,所以最有用处的头信息就是定期刷新,则头信息的名称成为refresh。
例子:

<%!
int temp=0;
%>
<%
//每隔1秒刷新页面
response.setHeader("refresh" , "1");
%>
<%=temp++%>

一般刷新的频率是2秒一刷新
定时刷新经过适当的设置,也可以完成定时跳转功能。可以让一个页面经过多少秒之后,跳转到其他的页面。

例子:

<%
//2秒后跳转到其他页面
response.setHeader("refresh","2;URL=getHeader.jsp");
%>
<h1>本页面2秒后跳回到首页</h1>
<h2>如果没有跳转,请按<a href="getHeader.jsp" >这里</a></h2>

定时跳转之后,页面的地址被改变了,所以此跳转称为客户端跳转。

注:

凡是跳转之后地址没有改变,内容改变了,称为服务器端跳转。

凡是跳转之后,地址改变了,称为客户端跳转。

使用静态也实现跳转功能

<meta http-equiv="refresh" content="2;URL=getHeader.jsp" />
<h2>本页面2秒之后跳转会首页</h2>
<h2>如果没有跳转,请按<a href="getHeader.jsp">这里</a></h2>

以上两种方式完成的效果都是一样的,没有任何的区别,但是如果有些页面中只是需要跳转的话,将其声明为动态页,则肯定执行速度不如静态页快,那么此时就可以使用第二种设置头信息的方式完成。

##2.跳转

###1.客户端跳转

在response对象中提供了专门的跳转执行,使用sendRedirect()就可以完成。
例子:

<%
//跳转到其他页
response.sendRedirect("getHeader.jsp");
%>

可以发现,以上完成了跳转的功能,而且地址栏已经被改变,所以此跳转称为客户端跳转。

此种跳转依然可以通过地址重写的方式向跳转页传递参数
例子:

<%	response.sendRedirect("sendRedirect03.jsp?msg=hello world!"); %>

###2.两种跳转的区别

服务器端跳转:

<jsp:forward >

客户端跳转 :

response.sendRedirect()、setHeader()

例子:response.sendRedirect()

<%@page contentType="text/html;charset=gb2312"%>
<%
System.out.println("response跳转前");
request.setAttribute("name","cs");//设置一个属性
response.sendRedirect("response06.jsp?ref=hello world!"); 	//跳转(客户端)
%>
<%	System.out.println("response跳转后"); %>

例子:<jsp:forward >
<%@page contentType="text/html;charset=gbk"%>
<%
System.out.println("跳转前");
request.setAttribute("name","cs");
%>
<jsp:forward page="response06.jsp" >
<jsp:param name="ref" value="hello world!" />
</jsp:forward>
<%	System.out.println("跳转后"); %>

Response跳转的特点:所有页面执行完之后再进行跳转,但是不能传递request范围的属性。
Forward属于无条件的跳转,只要执行到此语句之后则立刻跳转,但是可以传递request属性。
经过比较之后,可以总结出以下的一个应用问题:

如果现在一个页面中使用了JDBC,则应该在forward跳转之前关闭数据库连接,而使用response则可以在任意的位置处关闭。

##3.Cookie

###1.Cookie的基本使用

No方法类型描述
1Public Cookie(String name,String value)构造实例化Cookie对象,传入名称和内容
2Public String getName()普通取得Cookie的名字
3Public void setValue(String newValue)普通修改内容
4Public void setMaxAge(int expiry)普通Cookie的最大保留时间
如果想要设置Cookie,则肯定要使用response对象。

###2.向客户端增加Cookie

例子:

<%@page contentType="text/html;charset=gb2312"%>
<%
//准备号了两个Cookie
Cookie c1 = new Cookie("username","cs");
Cookie c2 = new Cookie("userpwd" ,"cs");
//通过response设置到客户端上去
response.addCookie(c1);
response.addCookie(c2);
%>

如果要想取得Cookie,则必须依靠request传递,客户端在每次提交的时候,都会将Cookie作为头信息一次性的提交过去,所以使用request对象中的以下方法。

public Cookie[ ] getCookies()

例子:

<%
//取得全部设置的Cookie对象
Cookie c[]=request.getCookies();
for(Cookie i : c){

%>
<h2><%=i.getName()%> =>> <%=i.getValue()%> </h2>
<%
}
%>

###3.深入研究

既然Cookie是保存在客户端上的一组信息,那么就意味着,浏览器关闭之后依然可以取得Cookie。
发现出现错误的地方是没有取得客户端设置的Cookie,因为一个Cookie在默认情况下只能保存在当前所打开的浏览器之中。而如果现在希望其真正保存在本地的话,则必须将其的保存时间进行设置。

Public void setMaxAge(int expiry)

例子:设置时间

<%@page contentType="text/html;charset=gb2312"%>
<%
//准备号了两个Cookie
Cookie c1 = new Cookie("username","cs");
Cookie c2 = new Cookie("userpwd" ,"cs");
c1.setMaxAge(20);
c2.setMaxAge(60);
//通过response设置到客户端上去
response.addCookie(c1);
response.addCookie(c2);
%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JSP response