Cookie & Session

  1. Cookie的核心特点
  • 存储位置:保存在客户端(用户的浏览器里)
  • 数据形式:键值对(key=value),比如username=zhangsan
  • 作用:记录用户的简单状态,比如记住登录状态、浏览记录
  • 有效期:可以设置过期时间,默认是浏览器关闭就失效
  • 缺点:数据不安全(用户能看到、修改),大小有限制(一般4KB以内)

2. 项目里的Cookie操作示例

// 1. 创建Cookie
Cookie cookie = new Cookie("username", "zhangsan");
// 2. 设置有效期(单位:秒),这里设为1小时
cookie.setMaxAge(60 * 60);
// 3. 把Cookie发给浏览器
response.addCookie(cookie);

// 4. 获取浏览器发来的Cookie
Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (Cookie c : cookies) {
        if ("username".equals(c.getName())) {
            String username = c.getValue();
            System.out.println("拿到的用户名:" + username);
        }
    }
}

// 5. 修改Cookie(同名覆盖即可)
Cookie newCookie = new Cookie("username", "lisi");
newCookie.setMaxAge(60 * 60);
response.addCookie(newCookie);

// 6. 删除Cookie(设置有效期为0)
Cookie delCookie = new Cookie("username", "");
delCookie.setMaxAge(0);
response.addCookie(delCookie);

二、Session:服务器里的“用户专属储物柜”

Session就像服务器里给每个用户开的专属储物柜,服务器会给每个用户发一个唯一的“钥匙”(SessionID),用户访问时带着钥匙,就能打开自己的储物柜,存取数据。

1. Session的核心特点

  • 存储位置:保存在服务器端
  • 数据形式:键值对,比如session.setAttribute("user", userObject)
  • 作用:记录用户的登录状态、购物车信息等敏感数据
  • 有效期:默认30分钟不操作就会过期
  • 优点:数据安全,用户看不到,也不能直接修改

2. 项目里的Session操作示例

// 1. 获取Session对象(如果不存在就创建)
HttpSession session = request.getSession();

// 2. 存数据(比如登录成功后存用户信息)
User loginUser = new User(1, "zhangsan", "123456");
session.setAttribute("loginUser", loginUser);

// 3. 取数据(判断用户是否登录)
User user = (User) session.getAttribute("loginUser");
if (user != null) {
    System.out.println("用户已登录:" + user.getUsername());
} else {
    System.out.println("用户未登录");
}

// 4. 删除数据
session.removeAttribute("loginUser");

// 5. 销毁Session(用户退出登录)
session.invalidate();

三、Cookie 和 Session 的区别

对比项 Cookie Session
存储位置 客户端(浏览器) 服务器端
安全性 低,用户可查看/修改 高,用户无法直接操作
存储大小 有限制(约4KB) 无明显限制
有效期 可设置,浏览器关闭可保留 默认30分钟,超时销毁
主要用途 记住用户名、浏览记录等非敏感信息 登录状态、购物车等敏感数据

四、项目里的实际应用场景

1. 登录状态保持

  • 用户登录成功后,把用户信息存到Session里
  • 每个页面都先判断Session里有没有用户信息,有就说明已登录,没有就跳转到登录页
  • 同时可以给浏览器发一个Cookie,存一个登录标识,下次访问时自动登录(记住我功能)

2. 购物车功能

  • 用户没登录时,购物车数据可以先存在Cookie里
  • 用户登录后,把Cookie里的购物车数据同步到Session里,登录状态下一直有效

五、答辩高频考点(学生版大白话)

  1. Cookie和Session是什么?有什么区别?
    答:Cookie是存在浏览器里的小纸条,Session是服务器里的储物柜。Cookie不安全,Session安全;Cookie大小有限制,Session没有。

  2. Session是怎么和用户对应的?
    答:服务器会给每个用户分配一个唯一的SessionID,存在Cookie里。用户每次访问时,浏览器会把这个SessionID带过去,服务器就能找到对应的Session。

  3. Session超时是什么意思?
    答:用户30分钟不操作,服务器就会销毁这个Session,里面的数据就没了,用户需要重新登录。

  4. 为什么登录功能要用Session?
    答:因为用户信息是敏感数据,不能存在Cookie里让用户看到,Session存在服务器里更安全,也方便管理用户状态。

posted @ 2026-04-24 16:43  忽晚0707  阅读(4)  评论(0)    收藏  举报