zoukankan      html  css  js  c++  java
  • 编码:session

    浏览网站:开始—》关闭=一次会话

    购物:浏览——》付款——》退出

    机制:

    客户端第一次请求客户端时,服务端会产生一个session对象(用于保存该客户的信息);

    并且每个session对象都会有一个唯一的sessionId(用于区分其他session);

    服务端又会产生一个cookie,并且该cookie的name=JSEESIONID,value=服务端sessionId的值;

    然后,服务端会在响应客户端的同时,将改cookie发送给客户端,至此客户端就有了一个cookie(JSESSIONID)

    当客户端后来再请求服务端时,(jsessionid——sessionid)服务端根据客户端中的JSEESION去服务端的sessionid中匹配,如果匹配成功(cookie,sessionid和JSEESIONID),说明此用户不是第一次访问,无需在登陆。

    例如:

    租客:(客户端)      房间 和 房东(服务端)

    租客第一次入住:房东判断一个人是不是这里的租客(根据他能否用钥匙进房间)。

    如果是新租客(没钥匙,且已交定金),房东给租客一条钥匙;房间——钥匙    对应

    当顾客第二次入住时,由于他是已经有钥匙了,所以房东不用再给他钥匙。租客的钥匙 和 房子对应

    ps:假如钥匙丢了(客户端清缓存或清cookie),则需要重新发钥匙(重新匹配)

    session:

    a、存储在服务端

    b、在同一个用户请求时共享

    c、实现机制

    session方法:

    String getId():获取sessionId

    boolean isNew():判断是否是新用户(第一次访问)

    void invalidate():使session失效(退出,注销)

     用法:session.invalidate();

    setAttribute()

    getAttribute():

    void setMaxInactiveInterval(秒):设置最大有效时间(无操作时间)

    int getMaxInactiveInterval():获取静止时间

    示例:登录

     

     

    所谓禁止时间,即在页面无操作

     

     流程:在login页面填写资料,然后check页面检查是否uname=“lww” 学号“12345”,如果是则跳到welcome页面,如果不是则跳回login页面重新填写。

    而登录成功后,由于设置了禁止时间,所以过了60秒后,再次直接访问welcome则需重新登录。

    报错:如果直接在地址栏访问check页面会出现错误

    原因:request只在同一次请求有效,由于“直接在地址栏访问check页面”属于第二次请求,获取不了数据(空指针)。如果按F5,则正常访问(浏览器会重新执行之前的动作,相当于重新一次请求)

    同一个浏览器可以多个页面获取uname(共享)

     cookie和session的区别

     

     

     

  • 相关阅读:
    Angular2学习笔记一
    @valid注解
    JPA注解@GeneratedValue
    java8 lambda 表达式
    Lombok的使用
    mybatis-plus的集成与使用
    mybatis之Sql语句构建器
    mybatis之使用注解
    php学习----异常处理(接上篇)
    php学习----错误处理和代码重用
  • 原文地址:https://www.cnblogs.com/mi-9/p/wen.html
Copyright © 2011-2022 走看看