参考资料
http
http是无连接的(减少对于资源的占用和消耗,这是很显然的,一般来讲用户很少会不断发送请求,大部分时间都不会占有Server资源才对)--------------一次连接的生命周期只存在于一次请求和响应周期;
http keep-alive是要解决日益增长的大量资源资源传输的问题,可以解决无连接问题。
http是无状态的(无记忆,多个请求之间相互独立互不影响)。
session
解决http无状态的问题,可以执行一些事物操作,提供并行能力。
token是session的灵魂。
cookie
一般是说在浏览器端,其实有两种表现形式,b-s交流时或者存储在浏览器时。
token也是cookie的灵魂
sessionId
sessionId是一种特殊的cookie,体现在其它cookie以临时文件的形式以备浏览器使用,而它是以内存的形式以备浏览器发送请求时使用。所以sessionId在浏览器关闭以后就会丢失,很难再通过它和Server通信了。
session的应用场景
统计在线人数
也就是统计存活session的数目。
具体实现:定义一个计数器,HttpSessionListener在create一个session域对象的时候,counter++;
在destroy一个session域对象的时候,counter–。
统计登录人数(考虑后登挤掉前登)
一个userId可能对应一个session或者多个session.
具体实现:
(1)定义一个ConcurrentHashMap<User ,HttpSession>,
登录一个用户User1,当账户密码都匹配的话,
看之前有没有用户User1登录,如果没有用户User1登录,直接put当前User1,置为session1。
如果User1已经登录,从map里获得session1,然后注销掉session1,再替换值为session2。
(2)存到redis里去,{user1:token}并且设置过期时间?