cookie实现会话跟踪,只用setValue()不能更新cookie值


注意:下划线部分后三行是郝玉龙书上没有的,加上才能更新cookie的值。


package com.servlet;


import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * Servlet implementation class for Servlet: CookieTrackServlet
 *
 * @web.servlet
 *   name="CookieTrackServlet"
 *   display-name="CookieTrackServlet"
 *
 * @web.servlet-mapping
 *   url-pattern="/cookieTrack"
 * 
 */
 public class CookieTrackServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
    /* (non-Java-doc)
  * @see javax.servlet.http.HttpServlet#HttpServlet()
  */
 public CookieTrackServlet() {
  super();
 }    
 
 /* (non-Java-doc)
  * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Cookie cookie = null;
       //获取请求相关的cookie
       Cookie[] cookies = request.getCookies( );
          
       //判断Cookie VisitTimes是否存在
       //如果存在,其值加1
       if (cookies != null){
           for (int i = 0; i < cookies.length; i++){
               if (cookies[i].getName( ).equals("VisitTimes")){
                 String v=cookies[i].getValue();
                 int value="/Integer.parseInt(v)+1;
                  cookies[i].setValue(Integer.toString(value));
                  cookies[i].setMaxAge(100*60);
                  cookies[i].setPath(request.getContextPath());
                  response.addCookie(cookies[i]);

                  cookie=cookies[i];
               }
           }//end for
       }//end if
        //不存在,创建cookie
       if (cookie == null){
               
           int maxAge=10000;
          
           //Create the Cookie object
     
           cookie = new Cookie("VisitTimes","1");
           cookie.setPath(request.getContextPath( ));
           cookie.setMaxAge(maxAge);
           response.addCookie(cookie);
        
       }//end if
       // 显示信息
       response.setContentType("text/html;charset=gb2312");
     
       java.io.PrintWriter out = response.getWriter( );
    
       out.println("<html>");
       out.println("<head>");
       out.println("<title>Cookie跟踪会话 </title>"); 
       out.println("</head>");
       out.println("<body>");
        
       out.println(
       "<h2> 您好!</h2>");
        
       out.println("欢迎您第 "+cookie.getValue( )+"次访问本页面<br>");
     
         out.println("</body>");
         out.println("</html>");
 }   
 
 /* (non-Java-doc)
  * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request,response);
 }          
}



没有评论: