1. 程式人生 > >Cookie應用:顯示上次訪問頁面時間

Cookie應用:顯示上次訪問頁面時間

Q題目

要求:

顯示上次訪問頁面時間,並新增清除Cookie功能

如下圖:

這裡寫圖片描述

這裡寫圖片描述

清除Cookie

這裡寫圖片描述

A 程式碼

實現Cookie顯示上次訪問時間

package com.tcb.cookie;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** *說明: *1.該方式將時間直接以long型別存進Cookie *2.從Cookie中取出值後,需要先做日期格式化,才能展示 * *優點:避免某些電腦瀏覽器因為Cookie值儲存長短限制不能顯示上次訪問時間 * *比如:“2017-05-04 20:33:22”,日期轉為該格式後,不能存進Cookie中,因為Cookie長度限制 * 但直接以--時間戳(long型別)--的方式,可以直接存進Cookie */
public class CookieServlet01 extends HttpServlet { private static final long serialVersionUID = 1L; public CookieServlet01() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //編碼格式 response.setContentType("text/html;charset=utf-8"
); PrintWriter writer=response.getWriter(); writer.write("上次訪問時間:"); Cookie[] cookies=request.getCookies(); if(cookies!=null){ //遍歷cookies,取出lastAccessTime這個cookie for (int i = 0; i < cookies.length; i++) { Cookie c=cookies[i]; if("lastAccessTime".equals(c.getName())){ //取值上次訪問時間,並顯示出來 String time=c.getValue(); time=new Date(Long.parseLong(time)).toLocaleString(); writer.write(String.valueOf(time)); } } } writer.write("<a href="+request.getContextPath()+"/ClearCookieServlet>清除Cookie</a>"); //獲取當前時間,並存儲到Cookie中 Long currentTime=System.currentTimeMillis(); Cookie cookie=new Cookie("lastAccessTime", currentTime.toString()); cookie.setMaxAge(5*60);//設定Cookie有效時間,5min內關閉再開啟瀏覽器Cookie會一直存在 response.addCookie(cookie); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }

清除Cookie

package com.tcb.cookie;

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

/**
 * 說明:
 *      清楚Cookie
 */
public class ClearCookieServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public ClearCookieServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //清除cookie

        //清除cookie時,完全沒必要先將cookie遍歷出來,再去清除cookie,儘管下面的方法可以實現清除cookie
        //我們可以根據cookie的特性,名字相同的cookie,後面設定的值會覆蓋前面的值
        /*Cookie[] cookies=request.getCookies();
        if(cookies!=null){
            for (Cookie cookie : cookies) {
                if("lastAccessTime".equals(cookie.getName())){
                    cookie.setMaxAge(0);
                    response.addCookie(cookie);
                }
            }
        }*/


        //便捷做法
        Cookie cookie=new Cookie("lastAccessTime", "");
        cookie.setMaxAge(0);
        response.addCookie(cookie);

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}