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