cookie和session的简单使用

cookie和session的简单使用

前言

Http是无状态的协议,http的每一次请求都是独立的,本次请求不能访问到上一次请求的记录状态,http结合cookie和session可以保存和记录会话的状态。

关于Cookie

  • 介绍:Cookie分为内存Cookie和磁盘Cookie,内存Cookie由浏览器维护,浏览器关闭就清除了,存在时间很短;磁盘Cookie存储在本地磁盘中,详情图1-1。磁盘coolie,有一个过期时间,可以手动设置,默认为-1,浏览器关闭就清除。可以设置长期时间来持久保存。所以,按存在时间,可分为持久Cookie和非持久Cookie。

    图1-1
    在这里插入图片描述

  • 使用案例
    创建springboot项目,接口代码为

  @RequestMapping("/setCookie")
        public String setCookie(HttpServletResponse response, String cookieName, String cookieValue) {
            Cookie cookie = new Cookie(cookieName, cookieValue);
            response.addCookie(cookie);
            return "cookieName=" + cookieName + ",cookieValue=" + cookieValue;
        }

        @RequestMapping("/getCookie")
        public Object getCookie(HttpServletRequest request) {
            return request.getCookies();
        }

运行项目,可以在chrome浏览器cookie缓存中看到cookie值
在这里插入图片描述
本地的cookie中加密了,但是也可以找到localhost abc字符串,说明改文件中也存储了该cookie值。现在关闭浏览器,重新打开,缓存和文件中都找不到了,说明cookie已被清除。设置超时时间30*30*3600,关闭浏览器,再次打开,cookie依然存在于磁盘文件中,说明cookie被持久保存了。
我们还可以在js中修改cookie,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    修改添加Cookie值 name=sfdsafasf
<script>
    document.cookie="name=sfdsafasf";
</script>
</body>
</html>

加载html页面,可以看到name=sfdsafasf已经添加成功。

关于Session

  • 介绍:一次请求就是一次会话,session称为会话信息,位于WEB服务器上。可以使用session存储用户的登录信息,服务器会为每一个用户生成唯一sessionid。session的生命周期归服务器掌管,服务器会把长时间没有活动的session移除,在Tomcat中,这个时间为30分钟。我们也可以手动调用session.invalid()手动设置失效。
  • 使用案例:
@RequestMapping("login")
    @ResponseBody
    public String login(HttpServletRequest request) {
        HttpSession session = request.getSession();
        if (session.isNew()) {
            session.setAttribute("isNew", true);
        } else {
            session.setAttribute("isNew", false);
        }
        return "是否新用户:" + session.getAttribute("isNew") + ",id=" + session.getId()+",保存时间"+session.getMaxInactiveInterval()+"s";
    }

在浏览器中访问,可以看到返回值和浏览器本地的JSESSIONID相等,说明服务器创建seesion后调用过HttpServletResponset的addCookie方法将JSESSIONID加入到了Cookie中。我们刷新页面,发现session没有重新创建,说明服务器拿到请求端cookie中JSESSIONID后,自动匹配到该会话之前创建的session并返回。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值