关于Cookie的问题,不得其解
我的理解是:Cookie可以在用户访问网页时,在访问者的机器上创立一个文件,写一段内容进去,来标识不同的用户,和存储一些变量值。如果下次用户再访问这个网页的时候,它又能够读出这个文件里面的内容。
那么就是说:只要创建了cookie,并且该cookie存活时间足够长,我在下次打开浏览器访问同一个文件的时候,cookie里的值可以被读出。对吗?
我写了这个servelt:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class CookieServlet extends HttpServlet {
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
int calledCount=0;
res.setContentType("text/html;charSet=gb2312");
PrintWriter out=res.getWriter() ;
out.println("<html><title>cookie</title><body>");
if (getReqCookie(req,out,"calledCount")==null)
calledCount=0;
else
calledCount=new Integer(getReqCookie(req,out,"calledCount")).intValue() ;
out.println("本次请求发送的cookie值为:");
if (calledCount==0) out.println("null");
else out.println(calledCount+"<hr>");
calledCount++;
Cookie cookie=new Cookie("calledCount",new Integer(calledCount).toString());
res.addCookie( cookie);
cookie.setMaxAge(365*24*60*60);
out.println("本次响应设置的cookie值为:"+calledCount);
out.println("</body><html>");
out.close();
}
private String getReqCookie(HttpServletRequest req,PrintWriter out,String name){
Cookie []cookies=req.getCookies();
if (cookies!=null && cookies.length >0){
for(int i=0;i<cookies.length;i++){
if (cookies[i].getName().equals(name))
return (cookies [i ].getValue());
}
}
return null;
}
}
运行后刷新页面,calledCount的值不断增加一,但是当我关掉浏览器,然后重新打开再次访问该页面时,calledCount又从1开始计数了?
我觉得很奇怪,难道没有创建cookie成功,所以记不住上次访问时的calledCount?但是如果没有创建成功,calledCount又怎么会自动增加呢?