在看《Java EE 编程技术》郝玉龙编著的书时,当看到利用Cookie跟踪会话,从而实现记录页面访问量的例子时,发现有个问题不能明白。        书上源代码如下:import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class CookieTrackServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;   
public CookieTrackServlet() {
super();
}   

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie cookie = null;
Cookie[] cookies = request.getCookies();

//如果客户端已有Cookie存在,则将其值加1
if (null != cookies) {
boolean flag = false;    //我的问题:为什么要加这个变量呢,不用可以不?
for (int i=0; i<cookies.length && !flag; i++) {
if (cookies[i].getName().equals("VisitTimes")) {
int value = Integer.parseInt(cookies[i].getValue()) + 1;
cookies[i].setValue(Integer.toString(value));
response.addCookie(cookies[i]); //值被更新的Cookie写回响应。
cookie = cookies[i];
flag = true;
}
}
}

//如果客户端还没有Cookie,则新创建一个。
if (null == cookie) {
cookie = new Cookie("VisitTimes", "1");
cookie.setPath(request.getContextPath());
cookie.setMaxAge(-1);
response.addCookie(cookie);
}

response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html><head><title>Cookie会话跟踪示例</title></head>");
out.println("<body>这是你第" + cookie.getValue() + "次访问,欢迎光临!</body>");
out.println("</html>");
}  

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}           
}
        而我不明白是为什么要加那个boolean的变量,不加可以么?我自己动手试了试,发现不加这个变量的话,就只能记录到记二次访问,第三次再访问时,数字就不会增加了。而加了这个变量后, 结果就正常,每访问一次,数字就加1。
        然而,个人觉得不加这个boolean变量,逻辑上是正确的,为什么效果出不出?
        本人新学Java,还请高手多多指教,谢谢!