servlet的cookie问题(cookie有效期问题)
两个文件,一个创建一个删除如下:CookieTest1.javapackagecom.test_servlet;importjavax.servlet.http.*;im...
两个文件,一个创建 一个删除
如下:
CookieTest1 .java
package com.test_servlet;
import javax.servlet.http.*;
import java.io.*;
public class CookieTest1 extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
Cookie mycolor=new Cookie("Color","red");
mycolor.setMaxAge(20);
res.addCookie(mycolor);
pw.println("Cookie′′½¨3é1|");
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
CookieTest2 .java如下:
package com.test_servlet;
import javax.servlet.http.*;
import java.io.*;
public class CookieTest2 extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
Cookie []allCookie=req.getCookies();
pw.println("lenth="+allCookie.length);
int i=0;
if(allCookie!=null)
{
for(i=0;i<allCookie.length;i++)
{
Cookie temp=allCookie[i];
if(temp.getName().equals("Color")){
temp.setMaxAge(0);
pw.println("é¾3y3é1|");
}
}
if(allCookie.length==i)
{
pw.println("Cookie 1yÆú");}
}
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
首先在C:\Documents and Settings\Administrator目录中(已经打开所有隐藏)见不到Cookies的目录,直接输入C:\Documents and Settings\Administrator\Cookies却能进去
打开第一个网页时
显示:Cookie创建成功
C:\Documents and Settings\Administrator\Cookies出现相应的cookie
setMaxAge(30)不是应该只保存30秒吗?
但在C:\Documents and Settings\Administrator\Cookies下
30秒后Cookie还在
执行第二个网页 显示
lenth=1 删除成功 Cookie过期
但在C:\Documents and Settings\Administrator\Cookies下cookie还是在
太奇怪了!删除不了呢?
那些乱码是中文,我在Jcreator中复制的,有点乱码 展开
如下:
CookieTest1 .java
package com.test_servlet;
import javax.servlet.http.*;
import java.io.*;
public class CookieTest1 extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
Cookie mycolor=new Cookie("Color","red");
mycolor.setMaxAge(20);
res.addCookie(mycolor);
pw.println("Cookie′′½¨3é1|");
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
CookieTest2 .java如下:
package com.test_servlet;
import javax.servlet.http.*;
import java.io.*;
public class CookieTest2 extends HttpServlet {
public void doGet(HttpServletRequest req,HttpServletResponse res){
try{
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();
Cookie []allCookie=req.getCookies();
pw.println("lenth="+allCookie.length);
int i=0;
if(allCookie!=null)
{
for(i=0;i<allCookie.length;i++)
{
Cookie temp=allCookie[i];
if(temp.getName().equals("Color")){
temp.setMaxAge(0);
pw.println("é¾3y3é1|");
}
}
if(allCookie.length==i)
{
pw.println("Cookie 1yÆú");}
}
}catch(Exception e){
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req,res);
}
}
首先在C:\Documents and Settings\Administrator目录中(已经打开所有隐藏)见不到Cookies的目录,直接输入C:\Documents and Settings\Administrator\Cookies却能进去
打开第一个网页时
显示:Cookie创建成功
C:\Documents and Settings\Administrator\Cookies出现相应的cookie
setMaxAge(30)不是应该只保存30秒吗?
但在C:\Documents and Settings\Administrator\Cookies下
30秒后Cookie还在
执行第二个网页 显示
lenth=1 删除成功 Cookie过期
但在C:\Documents and Settings\Administrator\Cookies下cookie还是在
太奇怪了!删除不了呢?
那些乱码是中文,我在Jcreator中复制的,有点乱码 展开
3个回答
展开全部
ll 和if(cookies[i].getName().equals("VisitTimes"))
如果cookie!=null 而且!cookies[i].getName().equals("VisitTimes")) 你没有判断 你应该设个全局boolean flag=false;
在if(cookies[i].getName().equals("VisitTimes")) 里
flag=true;
然后下面那个if(cookie==null)换成 if(flag){
}
else{
}
如果cookie!=null 而且!cookies[i].getName().equals("VisitTimes")) 你没有判断 你应该设个全局boolean flag=false;
在if(cookies[i].getName().equals("VisitTimes")) 里
flag=true;
然后下面那个if(cookie==null)换成 if(flag){
}
else{
}
追问
语法没错的
temp.setMaxAge(0);下面还有个输出pw.println("删除成功");
网页有显示“删除成功” 证明有执行了 temp.setMaxAge(0);
但我刷新下还是显示“删除成功”
不断刷新20秒后才不会显示 就是说temp.setMaxAge(0)没有起到任何作用啊!!!
不是应该在执行temp.setMaxAge(0)的时候cookie就应该被删除吗
怎么还是等20秒后cookie过期呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
setMaxAge(0);cookie删除
在代码中你把两个cookie的path都设置成相同!
或者setMaxAge(-1);
表示关闭浏览器后消失
在代码中你把两个cookie的path都设置成相同!
或者setMaxAge(-1);
表示关闭浏览器后消失
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询