栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Community--会话管理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Community--会话管理

会话管理 1.HTTP基本性质

HTTP是简单的HTTP是可扩展的HTTP是无状态的

无状态指的是在同一个连接中,两个执行成功的请求之间是没有关系的。这就带来了一个问题,用户没有办法在同一个网站中进行连续的交互,也就是是指协议对于交互性场景没有记忆能力,每个请求都是新的。举个栗子:当用户在进行网上购物时,通过登录验证了他是否是一个合法用户,然后跳转到了商品页面,可当用户进行购买操作时,服务器忘记了这个用户到底有没有经过验证。然后用户只能在添加商品时还是需要将重新将账号密码以及品信息一起提交给服务器。而使用HTTP的头部扩展,HTTP cookies就可以解决这个问题。把cookies添加到头部中,创建一个会话让每次请求都能共享相同的上下文信息,达成相同的状态。
注意,HTTP本质是无状态的,使用cookies可以创建有状态的会话。 2.cookie简单介绍

cookie是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。cookie 的生命周期可以通过两种方式定义:

会话期 cookie 是最简单的 cookie:浏览器关闭之后它会被自动删除,也就是说它仅在会话期内有效。持久性 cookie 的生命周期取决于过期时间(Expires)或有效期(Max-Age)指定的一段时间

    // cookie示例
    @GetMapping("/cookie/set")
    @ResponseBody
    public String setcookie(HttpServletResponse response){
        // 创建cookie
        cookie cookie = new cookie("code", UUID.randomUUID().toString().replaceAll("-", ""));
        // 设置生效范围
        cookie.setPath("/community/alpha");
        // 设置cookie生存时间
        cookie.setMaxAge(60 * 10);
        // 发送cookie
        response.addcookie(cookie);

        return "set cookie";
    }

  @GetMapping("/cookie/get")
    @ResponseBody
    public String getcookie(@cookievalue("code") String code){
        System.out.println(code);
        return "get cookie";
    }


缺点

数据存到客户端,安全性不能保证由于服务器指定 cookie 后,浏览器的每次请求都会携带 cookie 数据,会带来额外的性能开销 3.session

这里所说的session是为了绕开cookie的各种限制的一种更高级的会话状态实现。是JavaEE标准,用于在服务端记录客户端信息。虽然数据存放在服务端更加安全,但是也会增加服务端的内存压力。用户访问服务器时,服务器会创建一个session对象,然后返回给浏览器一个sessionId,并且把sessionId保存在cookie上,当用户再次访问服务器时,会带着sessionId,服务器就会匹配用户在服务器上的session,根据session中的数据,还原用户上次的浏览状态。

    // session示例
    @GetMapping("/session/set")
    @ResponseBody
    public String setSession(HttpSession  session){
        session.setAttribute("id", 1);
        session.setAttribute("name", "Test");
        return "set session";
    }

   @GetMapping("/session/get")
    @ResponseBody
    public String getSession(HttpSession  session){
        System.out.println(session.getAttribute("id"));
        System.out.println(session.getAttribute("name"));
        return "get session";
    }


4.未完成

粘性session
同步session
共享session

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727295.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号