日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

017_Cookie

發布時間:2025/4/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 017_Cookie 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. Cookie介紹

1. Cookie其實是一份小數據, 是服務器給客戶端, 并且存儲在客戶端上的一份小數據。

2. 應用場景: 自動登錄、瀏覽記錄、購物車。

3. 為什么要有這個Cookie: http的請求是無狀態。 客戶端與服務器在通訊的時候, 是無狀態的, 其實就是客戶端在第二次來訪的時候, 服務器根本就不知道這個客戶端以前有沒有來訪問過。?Cooke就是為了更好的用戶體驗, 更好的交互[自動登錄], 其實從公司層面講, 就是為了更好的收集用戶習慣[大數據]。

4. 創建Cookie并發送給瀏覽器

4.1. 創建Cookie并發送給瀏覽器

4.2. 客戶端收到的信息里面, 響應頭中多了一個字段Set-Cookie。

4.2. 添加多個Cookie創建多個就行, 一個服務器最多添加20個Cookie。

5. 獲取Cookie

6. 清除Cookie

?

7. Cookie的常用方法

7.1.創建Cookie: new Cookie(“name”, “value”);

7.2.設置Cookie有效期: cookie.setMaxAge(60 * 60 * 24 * 30);

7.3.設置路徑, 只有訪問/UseCookie/LoginFilter.action這個路徑地址才會帶cookie: cookie.setPath("/UseCookie/LoginFilter.action");

7.4.設置域, 只有訪問localhost域, 所有向該域發送的請求中都會包含這個cookie信息cookie.setDomain("localhost");

7.5.使用HttpServletResponse的addCookie()方法, 服務器響應瀏覽器的時候把cookie發送給瀏覽器: resp.addCookie(cookie);

7.6.使用HttpServletRequest的getCookies()獲取請求中攜帶的Cookie數組: Cookie[] cookies = req.getCookies();

二. 使用Cookie獲取用戶上次登錄時間

1. 創建一個UseCookie的Web工程

2. 在WebContent下創建一個index.html

3. 編寫index.html

<!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>登錄界面</title></head><body><form action="LoginFilter.action" method="post">賬號:<input type="text" name="username"/><br>密碼:<input type="text" name="password"/><br><input type="submit" value="登錄"/></form></body> </html>

4. 創建LoginFilter.java

5. 編寫LoginFilter.java

package com.lywgames.myservlet;import java.io.IOException; 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 LoginFilter extends HttpServlet {private static final long serialVersionUID = 1L;public Cookie getCookie(HttpServletRequest req, String name) {// 使用HttpServletRequest的getCookies()獲取CookieCookie[] cookies = req.getCookies();if(cookies != null){for (Cookie cookie : cookies) {if(cookie.getName().equals(name)){return cookie; }}}return null;}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("text/html;charset=utf-8");String userName = req.getParameter("username");String password = req.getParameter("password");if("admin".equals(userName) && "123".equals(password)){// 獲取lastLoginTime的CookieCookie lastLoginTime = getCookie(req, "lastLoginTime");// 如果lastLoginTime為空, 說明是第一次登錄if(lastLoginTime == null){// 創建一個新的cookieCookie cookie = new Cookie("lastLoginTime", String.valueOf(System.currentTimeMillis()));// 設置cookie有效期為30天cookie.setMaxAge(60 * 60 * 24 * 30); // 只有訪問/UseCookie/LoginFilter.action這個路徑地址才會帶cookiecookie.setPath("/UseCookie/LoginFilter.action");// cookie對于哪個域是有效的。cookie.setDomain("localhost");// 添加cookie, 響應給瀏覽器resp.addCookie(cookie);// 向客戶端輸出登錄信息resp.getWriter().println("歡迎您, " + userName);}else{// 向客戶端輸出登錄信息Date date = new Date(Long.parseLong(lastLoginTime.getValue()));// 更新cookielastLoginTime.setValue(String.valueOf(System.currentTimeMillis()));resp.addCookie(lastLoginTime);// // 刪除cookie, 需要關閉瀏覽器, 防止有緩存 // lastLoginTime.setValue(null); // 設置cookie為空 // lastLoginTime.setMaxAge(0); // 立即失效 // // 如果你在創建cookie的時候加上了路徑, 刪除cookie的時候也要帶路徑 // lastLoginTime.setPath("/UseCookie/LoginFilter.action"); // // cookie對于哪個域是有效的。 // lastLoginTime.setDomain("localhost"); // // 從新添加 // resp.addCookie(lastLoginTime);resp.getWriter().println("歡迎您, " + userName + ",上次登錄時間是:" + date);}}else{// 向客戶端輸出登錄失敗resp.getWriter().println("登錄失敗");}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

6. 編寫web.xml

7. 部署運行

8. 點擊登錄, 首次登錄沒有上次登錄時間, 之后登錄有上次登錄時間

三. Cookie的安全問題

1. 由于Cookie會保存在客戶端上, 所以有安全隱患問題。還有一個問題, Cookie的大小與個數有限制。為了解決這個問題, 就出現了Session。

總結

以上是生活随笔為你收集整理的017_Cookie的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。