会话技术-Session

强调内容#会话技术–Session
1.引入会话的原因:因为http协议是无状态的,所以在每个客户访问服务器资源时,服务器无法识别客户端,所以需要使用会话技术识别客户端的状态。引入会话技术就是帮助服务器去区分客户端。
2.一次会话:从打开一个浏览器访问某个web站点,到关闭该浏览器的过程就是一个会话。会话技术记录了这次会话中客户端的状态和数据。
3.会话技术:会话技术访问Cookie和Session。

Session技术

1.什么是Session技术
    Session在流程:在客户端访问服务器时,当服务器第一次执行到request.getSession()时,WEB应用服务器将会创建一个Session对象和相应的ID(JSESSIONID)属性,服务端将该ID属性以cookie的方式响应给客户端。在客户端后续访问服务器时,只要将ID属性传递给服务端,服务端就能判断出请求时哪个客户端发送的,从而选择相应的Session对象为其服务。
从上述的描述中,可以得知:
    1.Session的实现是基于Cookie的,Session需要借助于Cookie存储客户端的唯一标识JSESSIONID。
    2.session对象的内存区域是在服务器端的。
    3.request.getSession()方法,如果服务端中没有该客户端相应的Session对象,那么就会创建一个新的Session对象返回;如果已经存在该Session对象就直接将已有的Session对象返回。
    ps:判断是否有该对象实质上是根据JSESSIONID来判断服务器上是否已经存在Session。
2.有关学习session的内容
    2.1如何获取一个客户端的session对象(存在服务区的一个内存区域)
        获取session对象:HttpSession session=request.getSession();
    上诉方法将会获得一个专属于当前会话的一个session对象,如果服务器没有该会话的session对象将会创建一个session对象返回,如果已经有了属于该会话的session直接将已有的session返回。
    2.2如何向session中存取数据(Session是一个域对象)
        session.setAttribute(String name,Object obj);
        session.getAttribute(String name);
        session.removeAttribute(String name);

    2.3session的生命周期
        创建:第一次执行request.getSession()
        销毁:
            1.服务器关闭
            2.session过期了(默认是30分钟)   
                在web.xml中
                <session-config>
                    <session-timeout>30</session-timeout>
                </session-config>
            3.调用session.invalidate()进行手动销毁
    作用范围:默认在一次会话中。

注:session对象失效的原因
    1.在服务器关闭
    2.session.invalidate()进行手动销毁
    3.因为session对象的标识是通过cookie进行保存的,如果清除了cookie,session对象也会进行销毁。
面试题:浏览器关闭,session就销毁了?
    因为session对象的标识是通过cookie进行保存的,而cookie默认是会话级别的(关闭浏览器就销毁),所以该标识被删除了,找不到相应的session的对象,但这时该对象还存在于服务器中,没有被销毁。因为此时找不到该session对象,当在执行到request.getSession()时,服务端会再创建一个对象。
    但是,如果给保存session对象的标识设置持久化的时间,那么浏览器关闭,再一次访问时,session还是可以找到的。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值