Web状态管理

Web状态管理概述

原因:HTTP是一个无状态的连接

无状态:不会记录上次访问的信息,每次的请求都是一次全新的请求。

Web应用状态管理:4总方式来进行状态跟踪(回话跟踪)

  1. 隐藏表单域

    在源代码中可以查看到,相对不安全。

  2. cookie:(服务器给客户端的小甜点),

    把信息保存在客户端

  3. Session:会话

    把信息保存在服务器中,Session必须要依赖于cookie。

  4. url的重写

    cookie别禁用

cookie

服务器在响应请求的时候,将一些数据以“键-值”对的形式通过响应信息保存在客户端。

特点:

  1. 以键值对的形式保存(只能保存字符串类型)

  2. 服务器通过响应发回给客户端

  3. 保存在客户端

运行机制

//1. 客户端发送请求到服务端,服务端创建一个Cookie(键值对),响应发回给客户端
//浏览器中就保存了一份该服务器下的Cookie

    //创建一个cookie
        Cookie cookie = new Cookie("键","值");
        //可以设置多个cookie

    //设置cookie的有效期 以秒为单位
        cookie.setMaxAge(3*24*60*60);//三天
        //有效期的设置在添加之前。3*24*60*60可读性更好

    //把cookie放到响应中,然后响应给客户端
        resp.addCookie(cookie);


//2.当客户端第二次访问该浏览器时,浏览器会先去查看该服务器下的Cookie是否失效
//如果没有失效,则读取Cookie的内容放到盖茨请求的请求头中,发往服务器。
//如果已将失效,请求头中不会添加Cookie的内容


//3.服务器端会读取客户端发送的请求头中的头部信息来记录 访问的状态。

    //得到浏览器传过来的Cookie
        Cookie[] cookies = req.getCookies();
    //判断是否为空
        if(cookies != null){
            for(Cookie cookie : cookies){
                cookie.getName();//获得cookie的名字
                cookie.getValue();//获得cookie的值
                cookie.setValue();//设置cookie的值
                cookie.getMaxAge();//获得cookie的有效期
            }
        }

//注意:
    //1.Cookie的有效期为一次回话期间
        //一次回话期间 -> 打开浏览器进行访问 到 关闭浏览器。
    //2.每个浏览器只能访问自己访问的cookie,不能访问其他浏览器的。
原文地址:https://www.cnblogs.com/-Archenemy-/p/12736133.html