servlet05-Session技术

Session技术

原理:

    浏览器访问服务器时, 

    我们可以在服务器中为每一个浏览器创建一个HttpSession对象 !
    这个HttpSession对象, 存在一个ID属性 , 我们称其为: JSESSIONID !
    服务器会在向客户端响应时,  将JSESSIONID通过Cookie的方式 , 发送给浏览器进行存储 !
    当浏览器再次访问服务器时, 服务器会自动获取JSESSIONID ,根据ID寻找到对应的HttpSession对象! , 提供给我们使用!

如何获取HttpSession对象

无参方法: 推荐
    HttpSession session = request.getSession();
    用来获取一个Session对象, 内部的实现是 调用了一参方法, 传入了true !


一参方法:
    HttpSession session = request.getSession(boolean isNew);
    参数:
        true    :   获取一个Session , 如果之前存在 ,则拿来使用 ,如果 不存在则创建一个新的 !
        false   :   获取一个Session , 如果之前存在, 则拿来使用 , 如果之前不存在, 则返回null;

Session常用方法:

Session 可以用于存取数据, 是键值对的容器 !

设置数据:
    session.setAttribute(String key,Object value);
获取数据:
    Object value = session.getAttribute(String key);
删除数据:
    session.removeAttribute(String key);

销毁Session:
    session.invalidate();

如何修改 Session 的 默认存储时长

Session默认在服务器存活的时长为 最后一次请求后30分钟 ! 

JSESSIONID在浏览器中的存活时长为-1 ,当浏览器关闭时消失 !

方式1.

    通过修改tomcat的配置文件 ,来完成 tomcat默认会话时长的修改 !

    修改: tomcat安装目录下的conf文件夹下的 web.xml (独立运行环境)
    修改: Servers项目下的 web.xml文件 (开发环境)

    寻找到session-config节点, 修改子节点session-timeout中的内容, 内容为数字, 表示分钟 !

案例:
    <session-config>
        <session-timeout>2</session-timeout>
    </session-config>


方式2.
    单独修改某一个用户的session时长:

    通过session对象 调用setMaxInactiveInterval(int 秒);

Session优缺点

优点:
    -   安全 , 数据存储在服务器, 不会产生安全性的问题 !
    -   能保存任意类型的数据 (Object)
    -   存储的大小理论上没有上限 !
缺点:
    -   浪费服务器内存空间 , 用户过多时, 极容易耗尽服务器资源 !

Cookie和Session 结合使用

对于安全性不敏感的 字符串数据, 一般建议存储在Cookie中 !

对于安全性较为敏感的数据 一般建议存储在Session中 

对于较大的数据 , 存储在数据库 !

Servlet线程安全问题

tomcat在接收到用户新的请求时,  会启动新的线程, 调用对应的Servlet对象的service方法进行处理 !

service方法每一次执行 都处于一个 新的线程中 !

new Thread(){
    void run(){
        servlet.service(request,response);
    }
}.start();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值