J2EE笔记

概述

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:

https://blog.csdn.net/czh500/article/details/80220580

https://blog.csdn.net/czh500/article/details/80220605

原文地址:https://www.cnblogs.com/yyjh/p/11981074.html