小弟我刚刚开始学习JSP今天遇到关于cookie的一个问题,搞的我很郁闷
请看下我的两端代码
cookie1.jsp:
<%! 
String name=null;
String value=null;
String label="";
 %>
<% 
if (request.getCookies()!=null)
{
Cookie[] cookies=request.getCookies();
for(int i=0;i<cookies.length;i++)
{
Cookie ce=cookies[i];
name=ce.getName();
if ("user".equals(name))
{value=ce.getValue();
 label="您好, "+value+"!";
}

}

 %>
 <%= label %>
 <a href="cookie2.jsp">cookie2</a>
-----------------------------------------------------------------------------------
cookie2.jsp:
<%
Cookie newcookie=new Cookie("usa1","hejin"); 
newcookie.setMaxAge(-1);
response.addCookie(newcookie);
 %>
 <a href="cookie1.jsp">cookie1.jsp</a>
----------------------------------------------------------------------------------
调试时我先打开浏览器然后打开cookie1.jsp网页上没出现cookie中的内容(这是正常的),然后我在点击连接进入cookie2.jsp(生成cookie),接着再点击连接回到cookie1.jsp如愿以偿的显示出来cookie里的内容(现在都一切正常)。
可是当我关闭浏览起然后再打开浏览器打开cookie1.jsp时还是能读取cookie里的内容,这是为什么啊?
我在新建cookie的时候已经用了这个语句“newcookie.setMaxAge(-1);”了啊!为什么关了浏览器再打开COOKIE还存在啊?

解决方案 »

  1.   

    不好意思cookie2.jsp的代码有一点点的错误
    改正如下:
    <%  
    Cookie  newcookie=new  Cookie("user","hejin");    
    newcookie.setMaxAge(-1);  
    response.addCookie(newcookie);  
     %>  
     <a  href="cookie1.jsp">cookie1.jsp</a>  
      

  2.   

    晕 ,上次看的时候主帖什么内容都没有的,故有上言。楼主的问题和cookie一点关系都没有.
    注意这个:
    <%! 
    String name=null;
    String value=null;
    String label="";
     %>
    这3个值被定义成了页面级变量。
    在你第二次返回cookie1.jsp时,因为request.getCookies()有值,于是
    name赋值为"user",label赋值为="您好, hejin!";value赋值为"hejin",
    但关闭浏览器后,cookie消失,访问cookie1.jsp时,因为request.getCookies()无值,所以3个变量的值未变。当然你的<%= label %>输出也不变了。
    将这3个变量定义方式改变一下即可:
    <% 
    String name=null;
    String value=null;
    String label="";
     %>
    另外,尽量不要以<%! %>的方式定义变量,这常常会导致不可知的错误。