1. 程式人生 > >Cookie實現記錄上一次的登陸時間以及刪除Cookie

Cookie實現記錄上一次的登陸時間以及刪除Cookie

下面我們實現了得到客戶端的Cookie,然後判斷是否是最後一次登陸時間的Cookie。
如果是的話我們就轉成時間格式輸出。
我們是先獲取的Cookie而後新增Cookie,因為第一次登陸的時間我們沒有上一次的登陸時間。

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         response.setContentType("text/html;charset=utf-8");
         PrintWriter out
= response.getWriter(); //得到客戶端的所有的Cookie Cookie[] cookies=request.getCookies(); //從Cookie中找出儲存最後登入時間的Cookie //Cookie是一個鍵值對,並且鍵和值都是String的 if(cookies!=null){ for(int i=0;i<cookies.length;i++){ String name = cookies[i].getName();//得到Cookie的name
if("lastAccessTime".equals(name)) { String time = cookies[i].getValue();//得到最後登入時間,時間是字串型別的 long t = Long.parseLong(time); out.println("上次登入時間為:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(t))); } } } out
.println("<a href='"+request.getContextPath()+"/servlet/delcookie'>刪除Cookie</a>"); //把這次的登入時間以Cookie的形式傳送給客戶端 //建立Cookie Cookie cookie = new Cookie("lastAccessTime", System.currentTimeMillis()+""); cookie.setMaxAge(60*15);//Cookie 被儲存到磁碟了 cookie.setPath(request.getContextPath());// /day35_cookie 只要是路徑以 /day35_cookie開頭的都可以接收到Cookie //cookie.setPath("/");// /day35_cookie //把cookie傳送給客戶端 response.addCookie(cookie); /* * Cookie預設儲存在瀏覽器的記憶體,瀏覽器一旦關閉,Cookie全都沒了 * setMaxAge(time)設定Cookie的最大存活時間,預設單位是秒 * setMaxAge(-1);預設是-1,瀏覽器一旦關閉,Cookie全都沒了 * setMaxAge(0):瀏覽器不關閉,Cookie也沒了 * setMaxAge(正數) * * 滿足什麼條件客戶端會把Cookie發給伺服器端? * 被訪問資源的路徑前邊要匹配 * http://localhost:8080/day35_cookie/servlet/cookie1 * http://localhost:8080/day35_cookie/servlet/cookie2 */ }

上面我們還介紹了Cookie的setMaxAge()方法,這個是設定Cookie的存活時間的。
當然我們也可以手動的刪除Cookie,上面我們提供了方法,
上面我們的跳轉到刪除Cookie介面,刪除Cookie。
那麼我們是怎樣刪除Cookie的呢,我們再來看一下刪除Cookie的servlet。

    response.setContentType("text/html;charset=utf-8");

        //刪除Cookie
        Cookie cook = new Cookie("lastAccessTime", "");
        cook.setMaxAge(0);
        //設定path,否則可能會錯刪
        cook.setPath(request.getContextPath());
        response.addCookie(cook);       

我們先新建了一個Cookie跟需要刪除的Cookie重名,把其覆蓋掉,然後設定存活時間為0。
需要注意的是我們需要設定新Cookie的路徑,否則可能存在在其他路徑下重名的Cookie導致無法刪除。

對於路徑問題,我們可以自己設定cookie的路徑,相同路徑下的cookie可以在不同的servlet下共同使用。