Jsp&Servlet之Cookie
时间:2010-10-13 来源:zhouxin035
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对象,构造方法: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[] 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的保存时间
²默认情况下: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);
%>
<%
//构造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访问到,其它路径不能访问到。
本文出自 51CTO.COM技术博客
相关阅读 更多 +