cookie&session会话技术

会话技术 一次会话中包含多次请求和响应,在一次会话的多次请求之间共享数据的技术
客户端会话技术 cookie
服务器端会话技术 session

在服务器中创建一个cookie对象,通过response.addCookie()方法将cookie响应给浏览器,那么浏览器将接收此cookie并且在此次对话的后续请求中将携带此cookie.
可通过request.getCookies()获取浏览器所有的cookie.

cookie细节
1.一次可以发送多个cookie
2.cookie的存活时间 默认情况浏览器关闭cookie失效 也可手动控制 cookie对象.setMaxAge() -1默认值 0是删除 正数是持久化到本地多长时间,关闭浏览器再打开也是有效的
3.cookie中能存储中文吗 tomcat8及之后可以,之前不可以,需要转码 URL编码 %AB 一个百分号两个16进制数字
4.cookie的数据共享问题
5.cookie存储特殊字符的话会报错,可以进行URL编解再存储 取出时记得解码
同一个tomcat下部署了多个项目,项目之间可以共享cookie吗? 可以 但是需设置cookie对象.setPath("/") 因为默认每个项目只能获取自己虚拟目录下的cookie,放置cookie也是放在自己的虚拟目录下
不同tomcat下的不同项目可以共享cookie吗? 可以 但是这些项目需要有相同的一级域名 且cookie对象.setDomain(".baidu.com") 那么tieba.baidu.com 和 wenda.baidu.com 便可以共享cookie
注意: cookie对象.setDomain(".baidu.com") 域名必须以.开始

cookie的特点和作用
cookie的数据是存储在客户端浏览器的,不太安全,大小有限制,每个域名下数量也有限制 所以一般用于存储少量不太敏感的信息 在用户不登录的情况下,完成服务器对客户端身份的识别

session 服务器会话技术 数据是存储在服务器的,一次会话的多次请求之间共享数据
那么服务器如何判断多次请求属于同一个会话呢? session是依赖于cookie的 request.getSession()方法调用后,服务器会向浏览器发送一个cookie JSESSIONID=xxxxxxxxx,浏览器再次请求时会携带此cookie,服务器根据JSESSIONID来获取对应的session

细节:
1.浏览器关闭,重新打开浏览器是否可以获取刚才session中存储的内容?
默认情况下浏览器关闭,对应的cookie将失效 手动创建 name为 JSESSIONID的cookie setMaxAge为一个时间 那么再次打开浏览器访问还可以访问刚才存储到session的内容
2.服务器关闭,客户端不关闭,两次获取的session是同一个吗?
不是同一个,但是要保证数据不丢失 tomcat服务器正常关闭会执行session数据的钝化和活化 存储在work文件夹下 idea目前只能实现钝化,不能活化,因为服务器关闭它会删除work文件,重启会创建新的work,钝化的session数据也删除了
3.session的默认存活时间30分钟 可以手动设置失效 在tomcat web.xml 中可以设置session的默认存活时间

cookie和session的区别
cookie数据存储在浏览器,session数据存储在服务器 cookie存储数据相对不安全
cookie存储数据有大小限制,session没有 cookie只能存储字符串类型,session可以存储任意类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值