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; } }
結果: