理解HTTP session原理及应用2

其他知识:

浏览器访问某站点时,会自动取出与该站点对应的cookie信息(如果该站点在客户端创建了cookie的话),并将cookie信息内容随请求发到服务器中,最终封装到request对象中。



1.session会话对象是运行于服务器端的服务器对象,不同的客户端访问可以在服务器端同时创建与之对应的session对象。


2.通过request.getSession()/request.getSession(true)方法去创建或获取session对象。因为request对象中封装了全部的客户端请求信息,其中包含一项Cookie属性即

"Cookie: JSESSIONID=DE60D1ED009BE2011D03217245FD1295",这样通过上面的request.getSession()/request.getSession(true)方法很容易就获取与请求的特定客户端的那一个session对象了,独一无二的那一个。


3.客户端某次请求某服务器,如果服务器中运行了request.getSession()/request.getSession(true)方法,那么服务器端才会创建session对象,否则则不会创建。


4.如果客户某次请求服务器时,服务器中运行了request.getSession()/request.getSession(true)方法,那么服务器端创建一个session对象,并且在服务器端生成一个唯一id号来标志此session对象,然后在服务器响应给客户端的时候,会将此id号返回给客户端浏览器,对于http通信,解析出来以后也就是”Set-Cookie    JSESSIONID=74E39A7D5A4F6A87A5C64879525445F1; Path=/store“。.


5.在此之后,该客户端如果访问该服务器的其他资源,那么客户端的每次请求都会附加上"Cookie: JSESSIONID=DE60D1ED009BE2011D03217245FD1295"给服务器,即封装到request中,这样服务器端根据request.getSession()/request.getSession(true)方法通过判断(该session上次的访问时间是多少,客户是否长时间没有访问,session是否过期了,客户端是否关闭了浏览器等等)很容易得到该客户端相应的session对象,或者创建一个新的session对象给客户端(session有可能是失效的)。如果session没有失效,那么服务器端不会在给客户端传"Cookie: JSESSIONID=DE60D1ED009BE2011D03217245FD1295",如果session失效,则会生成新的JSESSIONID值并重新给客户端传新的"Cookie: JSESSIONID=DE60D1ED009BE2011D03217245FD1295",客户端更新cookie信息中的“JSESSIONID”值,然后以新的JSESSIONID值为客户端的唯一标识。


6.通过上面的步骤,就可以对http无状态通信,通过session对象的这种会话机制,来建立逻辑上的会话连接。


7.至于连接通道是否长连接还是短连接,TCP连接通道是否keep-Alive了,个人认为,那只是通道问题,占用的服务器和客户端的其他资源,只是通信时间问题和服务器资源的矛盾,与session这样的标志客户端是不一样的,也是没有关系的。因为即使是keep-Alive了,也需要session对象机制来唯一标志客户端。可以理解为那个只是通道。session机制才是说谁在这个通道中两端进行通信。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值