JSP内置对象之response
一、response概述
Response对象的主要作用是服务器对客户端请求的中响应,将web服务器处理后的结果发回给客户端。Response对象属于javax.servlet.http.HttpServletResponse接口的实例。它的常用方法有:
NO | 方法 | 类型 | 描述 |
1 | Public void addCookie(Cookie cookie) | 普通 | 向客户端增加 Cookie |
2 | Public void setHeader(String name, String value) | 普通 | 设置回应的头信息 |
3 | Public void sendRedirect(String location) thorws IOException | 普通 | 页面跳转 |
二、response设置头信息
例:定时刷新页面
<%@ pagecontentType="text/html" pageEncoding="GBK"%>
<html>
<head>
<title>response</title>
</head>
<body>
<%!
//定认全局变量
intcount = 0;
%>
<%
response.setHeader("refresh","5"); //设置5秒刷新一次
%>
<H2>您已访问了<%=++count%>次</H2>
</body>
</html>
例2页面定时跳转
<%@ pagecontentType="text/html" pageEncoding="GBK"%>
<html>
<head>
<title>response</title>
</head>
<body>
<H2>3秒后跳转到hello.htm页面,如没有跳转请按<a href="hello.htm">这里</a>!</H2>
<%
response.setHeader("refresh", "3;URL=hello.htm");
%>
</body>
</html>
<!doctype html>
<html>
<head>
<metacharset="UTF-8">
<title>udbful</title>
</head>
<body>
<h2>HELLO</h2>
</body>
</html>
对于语句response.setHeader("refresh","3; URL=hello.htm");在等同html中的代码:<META HTTP-EQUIV="refresh" CONTENT="5;URL=hello.htm">
只是JSP一般用于动态网页,HTML更多用于静态网页中。
更改如下:
<!doctype html>
<html>
<head>
<metacharset="GBK">
<title>udbful</title>
</head>
<META HTTP-EQUIV="refresh"CONTENT="5; URL=hello.htm">
<body>
<H2>3秒后跳转到hello.htm页面,如没有跳转请按<a href="hello.htm">这里</a>!</H2>
</body>
</html>
三、页面跳转(客户端跳转)
1.使用头信息方法可以设置页面跳转外,更常用的是sendRedirect() 方法完成页面跳转。
例
<%@ page contentType="text/html"pageEncoding="GBK"%>
<html>
<head>
<title>response</title>
</head>
<body>
<%
response.sendRedirect("hello.htm"); //直接跳转
%>
</body>
</html>
2.服务器端跳转与客户端跳转的简单区别
服务器端跳转:<jsp:forward>
客户端跳转:response.sendRedirect()/response.setHeader()/超链接等
服务器端跳转地址栏不变,客户端跳转地址栏有变化;
在使用 request属性范转时,只有服务端跳转才能够将request范围的属性保存到跳转页面,而客户端跳转无法保存;
服务器端跳转时则执行到跳转语句时会立刻进行跳转,客户端跳转是在整个页面执行完之后才跳转执行跳转。
根据上一条区别,在使用了JDBC操作时,一定要在服务器执行跳转之前关闭数据库(不然马上执行跳转),否则就无法将数据连接关闭了。
服务器端跳转比客户端跳转更常用。
例略
四、操作Cookie
Cookie 是服务器端保存在客户端的信息。常用的方法有:
NO | 方法 | 类型 | 描述 |
1 | Public Cookie(String name, String value) | 构造 | |
2 | Public String getName() | 普通 | 取得名称 |
3 | Public String getValue() | 普通 | 取得内容 |
4 | Public void setMaxAge(int expiry) | 普通 | 设置Cookie保存时间,以秒记 |
5 | Public void addCookie(Cookie cookie) | 普通 | 向客户端设置Cookie |
6 | Public Cookie[] getCookies() | 普通 | 取得客户端Cookie |
例1设置浏览器Cookie
<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head>
<title>response</title>
</head>
<body>
<%
Cookie c1 = new Cookie("zzg", "123456"); //定义新的Cookie对象
Cookie c2 = new Cookie("abc", "zzgqweqw"); //
response.addCookie(c1); //向客户端增加Cookie
response.addCookie(c2);
%>
</body>
</html>
例2 取得浏览器Cookie
<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head>
<title>response</title>
</head>
<body>
<%
Cookie c[] = request.getCookies(); //取得Cookies
for(int x=0; x<c.length; x++){
%>
<h2><%=c[x].getName()%>--><%=c[x].getValue()%></h2>
<%
}
%>
</body>
</html>
设置Cookie时一定要添加其保存的时间,不然再次打开浏览器时则无法再取得。
而且一个浏览器一般保存Cookie的数量也是有限的,一般为300个左右。
例3为Cookie添加保存时间
<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head>
<title>response</title>
</head>
<body>
<%
Cookie c1 = new Cookie("zzg", "123456"); //定义新的Cookie对象
Cookie c2 = new Cookie("abc", "zzgqweqw"); //
c1.setMaxAge(60); //保存60秒
c2.setMaxAge(60000000); //保存60000000秒
response.addCookie(c1); //向客户端增加Cookie
response.addCookie(c2);
%>
</body>
</html>
以上内容参考JAVAWEB开发实战经典(名师讲坛)