zoukankan      html  css  js  c++  java
  • [转]【会话技术】Session技术

    创建时间:6.29 & 6.30

     

    一、Session技术

    Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间  存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内 存空间。所以说Session的实现是基于Cookie,Session需要借助于Cookie存储客  户的唯一性标识JSESSIONID

    在Session这我们需要学习如下三个问题:

    怎样获得属于本客户端的session对象(内存区域)?

    怎样向session中存取数据(session也是一个域对象)?

    session对象的生命周期?

    1.获得Session对象

    HttpSession session = request.getSession();

    此方法会获得专属于当前会话的Session对象,如果服务器端没有该会话的Session      对象会创建一个新的Session返回,如果已经有了属于该会话的Session直接将已有      的Session返回(实质就是根据JSESSIONID判断该客户端是否在服务器上已经存在 session了)

     

     

    2.怎样向session中存取数据(session也是一个域对象)

    Session也是存储数据的区域对象,所以session对象也具有如下三个方法:

    session.setAttribute(String name,Object obj);

    session.getAttribute(String name);

    session.removeAttribute(String name);

     

     

    先访问1再访问2:

     

    *使用同一个浏览器(客户端)访问两个资源时,两个中的Session是一样的,因为Session是会话级别的

    3.Session对象的生命周期(面试题/笔试题)

    创建:第一次执行request.getSession()时创建

    销毁:

    1)服务器(非正常)关闭时

    2)session过期/失效(默认30分钟)

    问题:时间的起算点 从何时开始计算30分钟?

    从不操作服务器端的资源开始计时

    可以在web项目的web.xml中进行配置

    <session-config>

            <session-timeout>30</session-timeout>

    </session-config>

    3)手动销毁session

    session.invalidate();

    作用范围:

    默认在一次会话中,也就是说在,一次会话中任何资源公用一个session对象

    面试题:浏览器关闭,session就销毁了? 不对

    *情况:访问资源SessionServlet1后,客户端关闭、再次打开,session虽然已经创建,但cookie中的JSESSIONID丢失,找不到已创建的session。

    解决:将Cookie设置持久化时间

    注意要同名同路径

     

    *验证码校验:

    在CheckImgServlet中把随机生成的验证码内容存入session;

    在LoginServlet中验证码校验

     

     

    总结:

    重点:图

    会话技术:

    Session技术:存到服务器端 借助cookie存储JSESSIONID

    HttpSession session = request.getSession();

    setAttribute(name,value);

    getAttribute(name);

    session生命周期

    创建:第一次指定request.getSession();

    销毁:服务器关闭、session失效/过期、手动session.invalidate();

    session作用范围:默认一次会话中

  • 相关阅读:
    【Codeforces】Codeforces Round #680 Div2
    PS1 长命令回到行首进行覆盖
    vue 跟路径加载缺少跟前缀
    Mac OS Virtualbox 倒入 ova 镜像文件
    笔记本电脑扩展屏幕或设备后不能播放声音
    git clone 后使用子分支
    laravel 环境自编译过程
    virtual Box centos7 公司网络环境下不能联网的解决方案
    CentOS7 php7 安装 curl 扩展
    CentOS 7 安装 Nodejs npm 及版本冲突解决
  • 原文地址:https://www.cnblogs.com/musecho/p/11202467.html
Copyright © 2011-2022 走看看