声明:此篇文章为我从网上下载的doc文档里面的一部分内容,具体作者不知。
Cookie
简介:
Cookie
是服务器保存在客户端上的一组数据。例如,一些登陆网站时会提示是否保存密码,或是选择登陆有效期(浏览器进程、一天、一个月等等),这些都可以使用
Cookie
来实现。
Cookie
类
|
javax.servlet.http.Cookie
|
构造方法
|
Cookie(String name,String value)
|
服务器向客户端设置
cookie
|
addCookie(Cookie cookie)
由
response
调用,
可反复使用该方法设置多个
Cookie
|
服务器从客户端取回之前保留在客户端上的
cookie
|
Cookie[]
getCookies()
由
request
调用
|
设置
cookie
在本地留存的时间
|
setMaxAge
(int expiry)
由
cookie
对象调用
|
l
示例:设置
Cookie
cookie01.jsp
à
服务器响应客户的请求时,设置
cookie
到客户端:
²
先准备好
cookie
对象
然后利用
response.addCookie(Cookie cookie)
进行设置
<%
//构造Cookie对象,构造方法:Cookie(String name,String value)
Cookie c1= new Cookie("name","Jerry");
Cookie c2= new Cookie("password","1234");
Cookie c3= new Cookie("access_time",new Date().toString());
//将Cookie设置给客户端
//服务器向客户端传递数据,使用response对象
//方法:reponse.addCookie(Cookie cookie)
response.addCookie(c1);
response.addCookie(c2);
response.addCookie(c3);
%>
【注】浏览器窗口中看不到
Cookie
的信息
Cookie02.jsp
à
如果需要,服务器可以从客户端取回
cookie
,这是从客户端传数据到服务器,故要使用
request
的方法:
Cookie[]
request.getCookies()
。
²
利用
request.getCookies()
取得
cookie
数组
遍历数组,取得其中每一个
cookie
<%
//Cookie[] request.getCookies()方法
Cookie[] cs = request.getCookies();
for(int i=0;i<cs.length;i++){
Cookie tmp = cs[i];
//每一个Cookie由 name--value构成
//可以使用 String getName() 和 String getValue() 获得各成分的值
%>
<h1> <%= tmp.getName() %> <%=tmp.getValue() %> </h1>
<%
}
//JSESSIONID ACCE027387AADBD63525E4446F1DFD83是服务器自动设置的
//代表这个客户端在服务器上的一个唯一编号
%>
【注】:每一个
cookie
都是由
name – value
构成(由构造方法可知),
Cookie
类提供了如下
2
个方法获取
cookie
的
name
和
value
的值:
String getName()
String getValue()
l
设置
Cookie
的保存时间
(在一个窗口中先运行
cookie01.jsp
实现设置
cookie
,然后仍然在这个窗口中运行
cookie02.jsp
取回
cookie
并显示
是可以实现。但,如果在另外的浏览器窗口中直接运行
cookie02.jsp
,则无法再取回之前设置的
cookie
了)
²
如果希望
cookie
能在本地留存一段时间,使得在一段时间之内都可以取回
cookie
,则可以利用
Cookie
类的
setMaxAge(int expiry)
方法,
expiry
表多少秒后
cookie
过期。
修改
cookie01.jsp
为
cookie03.jsp
,增加
cookie
留存时间的设置,仍然使用
cookie02.jsp
取回
cookie
<h1>利用Cookie类的setMaxAge(int expiry)可是设置cookie在本地计算机上留存一段时间,单位是秒</h1>
<%
//构造Cookie对象,构造方法:Cookie(String name,String value)
Cookie c1= new Cookie("name","Jerry");
Cookie c2=new Cookie("password","1234");
Cookie c3=new Cookie("access_time",new Date().toString());
//设置留存时间30秒
c1.setMaxAge(30);
c2.setMaxAge(30);
c3.setMaxAge(30);
//将Cookie设置给客户端
//服务器向客户端传递数据,使用response对象
//方法:reponse.addCookie(Cookie cookie)
response.addCookie(c1);
response.addCookie(c2);
response.addCookie(c3);
%>
则运行
cookie03.jsp
完成设置
cookie
后,即使另开一个浏览器窗口,直接运行
cookie02.jsp
仍然可以取回
cookie
,
但时限到了之后
cookie
还是会失效。
但是,服务器自动设置的
JSESSIONID
还在。
我的备注:一个
servlet/jsp
设置的路径能够被同一路径或子路径下的
servlet/jsp
访问到,其它路径不能访问到。