JavaWeb:Cookie与Session的一些知识。

1. Cookie

1.1 什么是Cookie?

  1. Cookie是服务器通知客户端保存键值对的一种技术。
  2. 客户端有了Cookie后,每次请求都发送给服务器。
  3. 每个Cookie的大小不能超过4KB.

1.2 如何创建Cookie?

需要在方法中添加参数HttpServletResponse,由它通知客户端保存Cookie。

需要注意的是:Cookie所属的类应该为:javax.servlet.http.Cookie;

客户端收到响应后执行的操作:发现有set-cookie的响应头,就去查看自己的cookie,有这个cookie,则修改,如果没有就创建。

小案例:

@RequestMapping("/login")
public Result loginCheck(@RequestBody Map<String, Object> map, HttpServletRequest request, HttpServletResponse response){
    Result result = null;
    // 1. 创建Cookie对象
    Cookie cookie = new Cookie("user", "五彩斑斓的黑");
    // 2. 通知客户端保存Cookie
    response.addCookie(cookie);
    return result;
}

浏览器查看执行后结果:

执行结果如下

1.3 如何获取Cookie?

需要在方法中添加参数HttpServletRequest,从请求中获取对应的cookie值。获取的cookie是一个数组。

小案例:

@RequestMapping("/login")
public Result loginCheck(@RequestBody Map<String, Object> map, HttpServletRequest request, HttpServletResponse response){
    Result result = null;
    Cookie[] cookies = request.getCookies();
    for(Cookie c: cookies){
        System.out.println(c.getName() + "," + c.getValue());
    }
    return result;
}

执行后在控制台打印的信息如下:

user,五彩斑斓的黑
JSESSIONID,23D4B685F0C5E799F924C6A3B259FF2F

1.4 Cookie的生命控制

生命控制指的是如何管理Cookie(什么时候进行销毁。)

setMaxAge();

  • 正数:指定的秒数后过期

  • 负数(默认值):表示浏览器一关,Cookie就会被删除

  • 0:表示马上删除Cookie

2. Session会话

1. 什么是Session会话?

  1. Session是一个接口(HttpSession)。
  2. Session就是会话,它是用来维护客户端和服务器关联的一种技术。
  3. 每个客户端都有自己的一个Session会话。
  4. Session中,我们经常用来保存用户登录之后的信息。

2. Session的创建或获取

第一次调用时:使用request.getSession()方法获取。

使用session.isNew()判断session是否为刚创建出来。true表示刚创建,false则反之。

小案例:

@RequestMapping("/login")
public Result loginCheck(@RequestBody Map<String, Object> map, HttpServletRequest request, HttpServletResponse response){
    Result result = null;
    HttpSession session = request.getSession();
    System.out.println(session.getId());
    System.out.println(session.isNew());
    return result;
}

3. Cookie和Session的区别

主要区别是一个存储在客户端(Cookie),一个存储在服务器端(Session)。

具体详情可见本人觉得一片很不错的博客:

Cookie和Session的区别

资料参考:尚硅谷JavaWeb视频P258——P269部分

posted @   新衫如旧  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示