02_05 JSP内置对象之response

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开发实战经典(名师讲坛)


你可能感兴趣的:(response,cookie)