JSP response的使用
2016-05-20 00:00
453 查看
response 表示服务器端对客户端的回应。
response最常用的三种操作是:设置头信息,跳转,Cookie
response中的主要方法:
##1.头信息
###1.1 什么是头信息
头信息就是随着具体的内容一起提交到服务器端,或者从服务器端随着内容一起发送到客户端上来的。
当然,在JSP中可以直接通过request对象,取得全部的头信息。
取得全部头信息的名字:
取得每一个头信息的内容:
例子:
###1.2 设置头信息
以上的头信息属于HTTP自己提交过的,但是用户也可以自己手工进行头信息的设置,回应给客户端,但是因为头信息非常多,所以最有用处的头信息就是定期刷新,则头信息的名称成为refresh。
例子:
一般刷新的频率是2秒一刷新
定时刷新经过适当的设置,也可以完成定时跳转功能。可以让一个页面经过多少秒之后,跳转到其他的页面。
例子:
定时跳转之后,页面的地址被改变了,所以此跳转称为客户端跳转。
注:
凡是跳转之后地址没有改变,内容改变了,称为服务器端跳转。
凡是跳转之后,地址改变了,称为客户端跳转。
使用静态也实现跳转功能
以上两种方式完成的效果都是一样的,没有任何的区别,但是如果有些页面中只是需要跳转的话,将其声明为动态页,则肯定执行速度不如静态页快,那么此时就可以使用第二种设置头信息的方式完成。
##2.跳转
###1.客户端跳转
在response对象中提供了专门的跳转执行,使用sendRedirect()就可以完成。
例子:
可以发现,以上完成了跳转的功能,而且地址栏已经被改变,所以此跳转称为客户端跳转。
此种跳转依然可以通过地址重写的方式向跳转页传递参数
例子:
###2.两种跳转的区别
服务器端跳转:
客户端跳转 :
例子:response.sendRedirect()
例子:<jsp:forward >
Response跳转的特点:所有页面执行完之后再进行跳转,但是不能传递request范围的属性。
Forward属于无条件的跳转,只要执行到此语句之后则立刻跳转,但是可以传递request属性。
经过比较之后,可以总结出以下的一个应用问题:
如果现在一个页面中使用了JDBC,则应该在forward跳转之前关闭数据库连接,而使用response则可以在任意的位置处关闭。
##3.Cookie
###1.Cookie的基本使用
如果想要设置Cookie,则肯定要使用response对象。
###2.向客户端增加Cookie
例子:
如果要想取得Cookie,则必须依靠request传递,客户端在每次提交的时候,都会将Cookie作为头信息一次性的提交过去,所以使用request对象中的以下方法。
例子:
###3.深入研究
既然Cookie是保存在客户端上的一组信息,那么就意味着,浏览器关闭之后依然可以取得Cookie。
发现出现错误的地方是没有取得客户端设置的Cookie,因为一个Cookie在默认情况下只能保存在当前所打开的浏览器之中。而如果现在希望其真正保存在本地的话,则必须将其的保存时间进行设置。
例子:设置时间
response最常用的三种操作是:设置头信息,跳转,Cookie
response中的主要方法:
No | 方法名 | 描述 |
---|---|---|
1 | Public void setHeader(String name,String value) | 设置头信息的名字和内容 |
2 | Public void sendRedirect(String location )throws IOException | 跳转,由一个页面跳转到另外一个页面 |
3 | Public void addCookie(Cookie cookie) | 向客户端加入Cookie |
4 | Public void setContentType(String type) | 设置内容的返回类型 |
###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 | 方法 | 类型 | 描述 |
---|---|---|---|
1 | Public Cookie(String name,String value) | 构造 | 实例化Cookie对象,传入名称和内容 |
2 | Public String getName() | 普通 | 取得Cookie的名字 |
3 | Public void setValue(String newValue) | 普通 | 修改内容 |
4 | Public void setMaxAge(int expiry) | 普通 | Cookie的最大保留时间 |
###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/PHP基于Ajax的分页功能实现
- 开发阶段Jetty运行Jsp报错且响应空白
- jsp简单实现页面之间共享信息的方法
- Apache Web让JSP“动”起来
- 小论asp中request与response的用法
- asp页面提示Response 对象 错误 ASP 0156 : 80004005 HTTP 头错误
- 通过Response.Flush()实现下载失败的解决方法
- JSP学习经验小结分享
- JSP 多条SQL语句同时执行的方法
- 在jsp页面中响应速度提高的7种方法分享
- (jsp/html)网页上嵌入播放器(常用播放器代码整理)
- 使用JSP制作一个超简单的网页计算器的实例分享
- JSP上传excel及excel插入至数据库的方法
- JSP中文乱码常见3个例子及其解决方法
- jsp实现将动态网页转换成静态页面的方法
- JSP避免Form重复提交的三种方案
- 纯jsp实现的倒计时动态显示效果完整代码
- JSP自定义标签入门学习