Cookie講解

保存會話的兩種技術:
cookie
  • 客戶端技術(響應,請求)
session
  • 服務器技術,利用這個技術,能夠保存用戶的會話信息,能夠把信息或數據放在session中。
 
常見場景:網站登陸以後,你下次不用登陸了,第二次訪問直接就上去了!
今天給你們帶來的是Cookie的講解:
Cookie
  1. 從請求中拿到Cookie信息
  2. 服務器響應給客戶端Cookie
Cookie[] cookies=req.getCookies();//得到Cookie
cookie.getName();//得到Cookie中的Key
cookie.getValue()//得到Cookie中的Value
Cookie cookie = new Cookie("name", Value);//新建一個Cookie
cookie.setMaxAge(24*60*60);//設置cookie的有效期,例如一天
resp.addCookie(cookie);//響應給客戶端一個cookie
Cookie:通常會保存在本地的 用戶目錄下 appdata;
 
細節問題:一個cookie是否存在上限?
  • 一個Cookie只能保存一個信息;
  • 一個web站點能夠給瀏覽器發送多個cookie,最多存放20個cookie;
  • Cookie大小有限制4kb
  • 300個Cookie瀏覽器上限

 

刪除Cookie:
  1. 不設置有效期,關閉瀏覽器,自動失效;
  2. 設置有效時間爲:0

 

Cookie練習示例代碼:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //服務器,告訴你,你來的時間,把這個時間封裝成爲一個 信件,下次訪問,就知道你來了

    //解決中文亂碼
    resp.setContentType("text/html;charset=UTF-8");
    req.setCharacterEncoding("utf-8");
    resp.setCharacterEncoding("utf-8");
    
    PrintWriter out=resp.getWriter();

    //Cookie 服務器給客戶端獲取;
    Cookie[] cookies=req.getCookies();//得到Cookie,這裏返回數組,說明Cookie可能有多個

    if (cookies!=null){
        out.write("您上一次訪問本站的時間是:");
        for (int i = 0; i < cookies.length; i++) {
            Cookie cookie = cookies[i];
            //獲取cookie的名字
            if (cookie.equals("lastLoginTime")){
                long lastLoginTime = Long.parseLong(cookie.getValue());//解析成長整形
                Date date = new Date(lastLoginTime);//轉化成Date對象
                out.write(date.toLocaleString());//將Date類型轉化爲String類型,toLocaleString()方法已過時,但還能使用
            }
        }
    }else {
        out.write("這是您第一次訪問本站");
    }

    //服務器給客戶端響應一個cookie;
    Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");//System.currentTimeMillis()系統時間的方法,它返回的是1970年1月1日0點到如今通過的毫秒數。

    //Cookie有效期爲一天
    cookie.setMaxAge(24*60*60);
    //響應給客戶端
    resp.addCookie(cookie);
}
相關文章
相關標籤/搜索