Cookie的使用及常用方式
前言
在我们日常的web开发中,使用cookie以及session的频率是非常大的。比如,用户的登录模块,在页面上实现一个记住密码的复选框功能等都是离不开cookie和session
一、Cookie是什么?
1.定义
简单来说就是将一小段的文本信息保存在客户端浏览器的一种会话跟踪技术。
2.执行原理
1.浏览器第一次发送请求到服务器端。
2.服务器端会创建cookie,该cookie中包含着用户的登录信息,再将cookie响应到客户端浏览器。
3.当用户再次访问时,服务器端会将之前创建的cookie响应到客户端
4.服务器端可以通过cookie来区分不同的用户
3.常用方法
获取cookie的方法
Cookie[] cookie= req.getCookie();
c.getname();
c.getValue();
cookie的name不能为中文
value需要设置中文时,
需要解码:URLDecoder.decode(c.getValue(),“UTF-8”)
编码 :URLEncoder.encode(“中文”,“UTF-8”)
更新
第一种:先获取相应的value – 遍历 – 判断 – setValue(String value)
第二种:添加一个相同name值的Cookie,直接覆盖
生命周期:使用setAge生命周期 默认请求下:浏览器会将Cookie保存在内存中,只有浏览器不关闭,数据都在。直到浏览器关闭,数据消失
如果设置了setMaxAge(int n)
n<0:默认状态,保存在内存中,关闭浏览器数据失效
n=0:立即删除
n>0:保存在硬盘中,持续n秒(这时跟浏览器关不关闭无关)
直到时间走完之后自动删除
例子:c1.setMaxAge(30);//设置c1的声明周期为30s
1.打开浏览器先添加后查询 -- 可以看见两个
2.关闭浏览器,重新打开,直接查询 -- 只看到一个Cookie
3.30s以后刷新页面,Cookie消失
注意:30s是从添加的时候开始计时
二、Session是什么?
1.定义
简单来说就是一个将数据保存在服务器端的会话跟踪技术,jsessoinid就是每一个session对象的id值,它是依赖Cookie进行传递的。
2.执行原理
1.当浏览器第一次发送请求到服务器端,服务器端会创建一个Session对象,Session对象会分配一个Jsessionld ,同时也会创建一个特殊的Cookie对象,会以set-Cookie的方式将id传回浏览器,浏览器保存起来。
2.当浏览器再不关闭的情况下,浏览器端发送第二次及以上的请求到服务器端,浏览器端访问服务器端时就会携带该name为JSESSIONID的Cookie对象,服务器端会将ame为JSESSIONID的Cookie对象取服务器端查询,以便来区分用户。
三、Cookie和Session的区别是什么?
1.cookie是将数据信息保存在客户端或浏览器,session是将数据信息保存的服务端。
2.session存储数据信息比cookie存储的信息容量大。
3.session是将数据保存在服务器端,数据信息相对于cookie来说安全性更高。
!!!小白自己积累知识欢迎大家补充,改错!希望有帮助到你!!!!!!!