• Javaweb学习笔记7 session


    session:会话

    a。浏览网站:开始-关闭

    a。浏览、付款、退出

    c。电子邮件:浏览、写邮件、退出

      开始-结束

    session机制:

    第一次         

          客户端第一次请求服务端时,(jsessionid和session匹配失败)服务端会产生一个session()对象

                        (该session对象可以用于保存该客户的信息)并且每个session对象都会有一个唯一的sessionID(用于区分)  

                         服务端又会产生一个cookie,并且该cookie的key和value已确定,为name=JSESSIONID,value=服务端sessionID的值,然后服务端会在响应客户端的同时将该cookie发送给客户端,至此客户端                       就有了一个cookie(该里面有一个JSSENSIONID)。因此客户端的cookie就可以和服务端的session一一对应(JSSENSIONID-sessionID)

    第n次

          客户端第二/n次请求服务端时:服务端会先用客户端cookie中的JSESSIONID去服务端的session中匹配sessionid,如果匹配成功(cookie jsessionid和session sessionid),说明此用户不是第一                          次访问。

    sessionID是session对象的唯一标记,在服务端中

    JSESSIONID存储在cookie中,在客户端中,由服务端给客户端

     

    例子:

    服务端:    顾客(客户端)

    服务端:存包处   商场(服务端)

    顾客第一次存包 :商场判断此人是否之前已经存过包(通过你手里是否有钥匙)

    如果是新顾客(没钥匙),分配一个钥匙给该顾客,钥匙会和柜子一一对应。

    第二次/n次寸存包,商场判断此人之前是已经存过包的(通过你手里是否有钥匙)

    如果是老顾客(有钥匙),则不需要分配,该顾客手里的钥匙会和柜子一一对应

    session小结:

    a.  session 对象存储在服务端

    b.session是在同一个用户请求时共享

    c. 实现机制:第一次客户请求时产生一个sessionid并复制给cookie的jsessionid然后发给客户端,最终通过sessionID与JSESSIONID匹配

    session 方法

    String getId()      获取sessionId (字符串)

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

    void invalidate() 使session失效(退出登录,失效,相当于收回钥匙或者钥匙作废)

    session里面可以放东西

    void setAttribute()

    object getAttribute()

    void setMaxInactiveInterval(秒):设置最大有效非活动时间。在这么长的时间内没有操作,则再次使用还需登录验证,如果在这么长时 间内操作,则上次登录有效

    int getMaxInactiveInterval()获取最大有效非活动时间

    session实例

    在浏览器内从login.jsp按照zs/abc登录入welcome.jsp页面后,即使在session有效期内从URL栏直接输入welcome.jsp会导致空指针错误,因为request内数据只在一次内有效,从地址栏回车相当于发送第二次请求。但是,如果登录入welcome.jsp后在页面按F5刷新,则还会出现之前的内容,因为如下,浏览器会重复之前的动作。

    session内的属性是同一次会话共享,只要还没结束,就一直能获取里面的内容。但是更换浏览器则不行。

  • 相关阅读:
    android-studio add jar
    android-studio 下载
    fastjson对Date类型的格式化
    springboot多环境区分
    Docker开启远程访问
    docker中批量删除 tag为none的镜像
    项目无法依赖Springboot打出的jar
    Spring Boot使用Swagger2
    mysql表时间戳字段设置
    springMVC dubbo注解无效,service层返回空指针
  • 原文地址:https://www.cnblogs.com/xiaotianzhang16/p/10403056.html
Copyright © 2020-2023  润新知