zoukankan      html  css  js  c++  java
  • javaWeb中的session

    什么是sesson?

    服务器会为每个浏览器 创建单独Session对象,Session对象用来保存与对应浏览器相关会话数据 

    session和cookie的区别?

    Session和Cookie 相比,Cookie 数据保存客户端,Session数据保存服务器端
    Cookie 好处:保存客户端,不占用服务器资源 (记住用户名密码、上次访问时间 、商品浏览记录 ...) 缺点:安全性
    Session 好处:数据保存服务器端,更加安全 ,缺点:占用服务器资源,当Session数据非常多时,服务器压力非常大

    Session原理

    1、当客户端访问服务器,第一次 request.getSession() API得到执行,随机创建Session对象,为对象创建唯一编号 id
    2、服务器会将创建Session 的编号 id 以Cookie形式 发送给客户端
    3、客户端接收 session的编号,保存起来(会话级别、持久级别)
    4、客户端下次访问服务器,因为cookie中含有session的id ,会自动携带session的id
    5、服务器端,从cookie中获得session的id,并且request.getSession()时,根据session的id查找到服务器端对应Session对象

    关闭浏览器再打开,Session中数据还在不在?

    cookie持久的,获得之前session的id ---- 找到相应信息
    cookie是会话级别,关闭浏览器后丢掉 session的id ,服务器端session数据还在,但是找不到信息
    ***浏览器关闭 与Session存在无关 ,关闭浏览器只是丢失保存在cookie中 session的id

    *** 手动设置jsessionid持久化
    Cookie cookie = new Cookie("JSESSIONID", session.getId());
    cookie.setMaxAge(60 * 60);
    cookie.setPath("/day7");
    response.addCookie(cookie);

    Session生命周期 :
    1、创建 :request.getSession() (没有jsessionid找不到对应Session)
    2、失效 :
    (1) 服务器正常关闭,重启后,session数据还有,中止服务器,启动,session数据丢失
    ** 正常关闭服务器,session中数据会被序列化到 tomcat/work 目录,重启后重新加载
    (2) 自动过期 ,当session持续一段时间没有使用,服务器就会自动删除session对象
    tomcat/conf/web.xml
    <session-config>
    <session-timeout>30</session-timeout>
    </session-config>
    默认session过期时间 30分钟

    API 进行设置 session.setMaxInactiveInterval(int interval) 单位秒

    (3) 手动销毁session ---- session.invalidate() 销毁当前session对象,清除里面所有数据

    禁用cookie?

    如果客户端禁用cookie,会怎么样 ?服务器Session对象还是存在的 ,客户端无法找到Session
    *** cookie 禁用解决 ,在url地址上 拼接jsessionid
    http://localhost/day7/session/cart.jsp;jsessionid=5509175E258A27EBAA3BF972E5D309EF (分号 ; 不是 ?)

    使用response 提供现成API : encodeURL
    *** 禁用cookie 使用所有url 必须都进行重写,只要有一个没重写,session丢失 ,无法获得丢失session的数据

  • 相关阅读:
    百度文库文档下载分析
    旅游公司招聘Java工程师
    C# 在Repeater 的ItemDataBound 如何转换e.Item.DataItem 的类型
    IOS多线程GCD
    vDSP加速的应用
    ios获取内核数目
    Struts06---通配符的使用
    Struts05---动态查询
    Struts04---命名空间的查询顺序以及默认执行的Action
    Struts03---参数传递
  • 原文地址:https://www.cnblogs.com/zhuangwf/p/10807262.html
Copyright © 2011-2022 走看看