研究一下:如何实现解决FF的关闭浏览器就自动清空掉cookie值吧!
一、用户登录时,只有当前页Cookies有效,如果是新开一个窗口Cookies无效,要重新登录才行。
二、我关闭浏览器时(点右上角直接关闭)Cookies直接失效。
因为虽然cookie是在客户端,但是确分为两种情况:
1。硬盘cookie,是指在你设置了cookie的Expires属性,此时cookie将保存到你的硬盘上,一般是document/cookie下面。此时所有的窗口将共享同一个名字的cookie。
2。内存cookie,是指没有设在cookie的Expires的属性,此时cookie将停留在客户端的内存中,只有在该IE窗口中从“文件-新建-
窗口”打开的新的IE窗和由form的target属性为_blank产生的新的IE窗口才共享同一个cookie信息。
response.cookies("cookiename").expires中expires的属性如下:
response.cookies("cookiename").expires=-1 表示网页显示之后过期
response.cookies("cookiename").expires=0 立即过期
response.cookies("cookiename").expires=data +10 当前时间+10天数 表示在10天以后过期了.
response.cookies("cookiename").expires=10 表示10分钟后过期..
单独表示是以分钟来做单位的,session的单位也是的,但是和date + 10 就不一样了 ,因为date是日期,日期的单位是天,10当然就变成天了。
以上就是设置过期时间的,但是单位是“天”,就是说这个cookie过一天才会无效,如果想让它在半小时或更短的时间就无效要怎么做呢?
response.cookie("cookiename").expires=dateadd("n",30,now())
"n"单位为“分钟”
或者
response.cookie("cookiename").expires=dateadd("s",1800,now())
"s"单位为“秒”
一个简单的例子
1. 写入Cookie --- writecookie.jsp
-------------------------------------------------------------
<%@ page contentType="text/html; charset=ISO8859_1" %>
<%
Cookie _cookie=new Cookie("user_delfancom", "delfan");
_cookie.setMaxAge(30*60); // 设置Cookie的存活时间为30分钟
response.addCookie(_cookie); // 写入客户端硬盘
out.print("写Cookie完成");
%>
2. 读取Cookie.jsp --- readcookie.jsp
-------------------------------------------------------------
<%
Cookie cookies[]=request.getCookies(); // 将适用目录下所有Cookie读入并存入cookies数组中
Cookie sCookie=null;
String sname=null;
String name=null;
if(cookies==null) // 如果没有任何cookie 得加上的哦!
out.print("none any cookie");
else
{
out.print(cookies.length + "
");
for(int i=0;i
{
sCookie=cookies[i];
sname=sCookie.getName();
name = sCookie.getValue();
out.println(sname + "->" + name + "
");
}
}
%>
需要注意的两个问题:
1. Cookie有个适用路径的问题, 就是说如果 writecookie.jsp和readcookie.jsp要放在同意目录下, 如果不在同一目录下, 则写的时候需要设置路径,为readcookie.jsp所在的路径.
2. 读入Cookie数组的时候需要判断是否为空(null), 网上很多代码都没有写出这一点.
[哈哈!]
设置Cookie的存在时间,及删除Cookie 在JSP中,使用setMaxAge(int
expiry)方法来设置Cookie的存在时间,参数expiry应是一个整数。正值表示cookie将在这么多秒以后失效。
注意这个值是cookie将要存在的最大时间,而不是cookie现在的存在时间。
负值表示当浏览器关闭时,Cookie将会被删除。零值则是要删除该Cookie。 如:
处理Cookie的属性
看到这里,有的朋友又要问了:我光知道如何创建Cookie有什么用呀?是呀,光知道如何创
建Cookie而不知道怎么使用是不够的。在JSP中,程序是通过cookie.setXXX设置各种属性,用cookie.getXXX读出
cookie的属性,现把Cookie的主要属性,及其方法列于下,供大家参考:
类型 |
方法名 |
方法解释 |
String |
getComment() |
返回cookie中注释,如果没有注释的话将返回空值. |
String |
getDomain() |
返回cookie中Cookie适用的域名. 使用getDomain() 方法可以指示浏览器把Cookie返回给同 一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完全相同的服务器。注意域名必须以点开始(例如.yesky.com) |
int |
getMaxAge() |
返回Cookie过期之前的最大时间,以秒计算。 |
String |
getName() |
返回Cookie的名字。名字和值是我们始终关心的两个部分,笔者会在后面详细介绍 getName/setName。 |
String |
getPath() |
返回Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下 的所有页面。 |
boolean |
getSecure() |
如果浏览器通过安全协议发送cookies将返回true值,如果浏览器使用标准协议则返回false值。 |
String |
getValue() |
返回Cookie的值。笔者也将在后面详细介绍getValue/setValue。 |
int |
getVersion() |
返回Cookie所遵从的协议版本。 |
void |
setComment(String purpose) |
设置cookie中注释。 |
void |
setDomain(String pattern) |
设置cookie中Cookie适用的域名 |
void |
setMaxAge(int expiry) |
以秒计算,设置Cookie过期时间。 |
void |
setPath(String uri) |
指定Cookie适用的路径。 |
void |
setSecure(boolean flag) |
指出浏览器使用的安全协议,例如HTTPS或SSL。 |
void |
setValue(String newValue) |
cookie创建后设置一个新的值。 |
void |
setVersion(int v) |
设置Cookie所遵从的协议版本。 |
1.测试一下自己用JSP来写一个cookie吧!
然后来测试一下是否能够做到浏览器关闭的时候就自动清空掉
代码如下:
1.写一个创建cookie 的方法
<%! Cookie createCookie(String value){
Cookie cookie=new Cookie("sjhkebao",value);
cookie.setMaxAge(-1);
return cookie;
} %>
<% response.addCookie(createCookie("cookie")); %>
2.写一个读取cookie值的一个方法吧!
阅读(996) | 评论(0) | 转发(0) |