1. 程式人生 > >Cookie瀏覽器會話技術顯示上一次登陸時間

Cookie瀏覽器會話技術顯示上一次登陸時間

案例:  可以顯示上一次登陸時間
    記錄上次訪問的時間
    需求:
        當用戶第一次登陸的時候,提示:你是第一次登陸,且記錄該次訪問時間。
        下一次訪問的時候,獲取上次訪問時間且展示出來.
    cookie 由伺服器生成,通過response將cookie寫回瀏覽器(set-cookie),保留在瀏覽器上,
    下一次訪問的時候,瀏覽器會根據一定的規則攜帶不同的cookie(通過request的頭cookie),我們伺服器可以接收cookie
    會話分類:
        cookie:瀏覽器端會話技術
        session:伺服器端的會話技術
    cookie的api:
        new Cookie(String key,String value)
    寫回瀏覽器:
        response.addCookie(Cookie c);
    獲取cookie:
        Cookie[] request.getCookies();
    Cookie的常用方法:
        getName():獲取Cookie的key名稱
        getValue():獲取Cookie的值

    步驟分析:
        1.建立一個servlet RemServlet lastTime
        2.在servle中:
            獲取指定cookie 例如:名稱為lastTime
                request.getCookies()
            判斷cookie是否為空:
                若為空:提示資訊,第一次訪問
                若不為空:'
                    獲取此cookie的value
                    展示資訊:你上次訪問的時間是...
            將這次訪問時間記錄,寫回瀏覽器
            
    cookie總結:
        常用總結:
            setMaxAge("秒");            //設定Cookie在瀏覽器端的存活時間
                若設定成為0:刪除該Cookie(前提必須路徑一致)
            setPath(String path):設定cookie的路徑.
            當我們訪問的路徑中包含了此Cookie的Path,則攜帶過去
            預設路徑:
                訪問servlet的路徑,從"/專案名稱"開始,到最後一個"/"結束
                例如:
                    訪問的servlet的路徑:
                        /Cookie_Session/servlet/RemberServlet
                    手動設定路徑:
                        以"/專案名"開始,以"/"結尾

           

package com.nyist.Cookie.Rem;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
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;

public class RemberServlet extends HttpServlet {
	@Override
	public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//0.設定編碼
		req.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("UTF-8");
		resp.setContentType("text/html;charset=utf-8");
		PrintWriter outPrintWriter = resp.getWriter();
		//1.獲取指定的cookie
		Cookie cookie = getCookieByName("lastTime",req.getCookies());
		//2.判斷cookie 是否為空
		if(cookie==null){
			//cookie 為空提示第一次時間
			outPrintWriter.write("您是第一次訪問!");
		}else{
			//cookie 不為空 顯示上一次登陸時間
			String value = cookie.getValue();  //lastTime=12123454
			long time = Long.parseLong(value);
			Date date = new Date(time);
			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd E hh:mm:ss");
			outPrintWriter.print("Cookie名稱:"+cookie.getName()+"\n"+"Cookie值:"+cookie.getValue()+"\n"+"CookeiePath:"+cookie.getPath());
			outPrintWriter.print("你上次訪問的時間:"+simpleDateFormat.format(date));
		}
		//3.將當前訪問時間記錄
		//3.1建立Cookie
		cookie = new Cookie("lastTime",new Date().getTime()+"");
		//3.2 寫回瀏覽器
		resp.addCookie(cookie);
		
	}

	private Cookie getCookieByName(String value, Cookie[] cookies) {
		if(cookies!=null){
			for (Cookie cookie : cookies) {
				if(cookie.getName().equals(value)){
					return cookie;
				}
			}
		}
		return null;
		
	}
}

 結果: