概述
J2EE基本组件:https://blog.csdn.net/lianjiangwei/article/details/50848531
J2EE核心API与组件:https://blog.csdn.net/haiyunlx/article/details/83221652
JNDI:https://blog.csdn.net/wn084/article/details/80729230
监听器Listener
数据库连接池
tomcat-数据库连接池
session
session不是持久化的;
session生命周期:https://www.cnblogs.com/shizhijie/p/8422662.html
每个浏览器有一个session对象,每个session对象有唯一id;
session对象的方法:
setMaxInactiveInterval(60 * 60 * 24)
setAttribute(key,value)
普通网站,一个session对象:
邮箱1 验证码
邮箱2 验证码
username 用户名
password 密码
session(会话)保存在服务端,每个浏览器有一个session对象,服务应共享session(Redis管理session来实现)
1月1日,用户A登录成功,idpw保存10天,即session对象有10天的生命,
1月4日,用户B登录成功,idpw保存10天,即session对象有10天的生命,
这就矛盾了,所以:一个session对象中,不可能有两对用户名密码存在;
cookie
cookie是持久化的;
注意:本地的cookie不能存太大数据,4KB;
关于删除cookie:
cookies[i] = null;//JVM不再引用该对象,cookie文件依然存在
cookies[i] = new Cookie(ConstPool.SESSION_KEY1, null);//cookie值置空
cookies[i].setMaxAge(0);//删除该cookie
cookie/session/token:https://www.cnblogs.com/moyand/p/9047978.html
token
基于token的登录,是不存在回话状态,大概思路,在用户初次等路的时候,校验用户账号密码,成功后给其生成一个token,token=用户ID+时间戳+过期时间+一个自己平台规定的签名,使用jjwt生成一个令牌,然后对其进行存库,用户每次访问接口,都会在头部Headers中带上token,后来拦截器对其进行拦截,如果token为空或错误则让其登录,如果有token,获取token进行其解析,取出里面的用户ID,根据用户ID查询数据库中所存token,判断其是否正确,正确使其登录,错误则提示登录,大致思路就是这样;
问题
cookie getmaxage是-1: