一、Session
1、Session是什么?
- Session是会话
- 用户打开浏览器,发送一系列的请求。然后关闭浏览器的过程就为一次会话
2、Session的作用
- 保持某种状态,比如说,保存我们的登录状态。(也就是说,在访问其他页面之前要先判断是否登录。做个登录的记录)
- Session的出现解决了http协议无状态的问题。
- Session可以看作一个令牌,证明到过某地
(i)http协议是无状态的
在发送一次请求之后,浏览器和服务器之间的连接就断开了,服务器做的一系列的事情,浏览器都是不知道的,只有最后返回数据是,浏览器才知道服务器做了什么。
(ii)http协议无状态的原因
比如说,在一个时间点上,同时有100万人去访问百度。100万个请求和服务器连载一起,就会导致服务器压力很大,很容易有崩溃
3、Session的原理
4、Session什么时候会被销毁
- 浏览器关闭的时候,会被销毁
- 如果很久不使用到这个session,也会被销毁
(i)如何设计session存活时间
- 在web.xml中就可以设置
-
<!--设置session的存活时间--> <session-config> <!--单位是分钟--> <session-timeout>60</session-timeout> </session-config>
二、Cookie
1、Cookie是什么?
- Cookie:
JSESSIONID=29AEF5EDCF8E95EA9943B64450006A28,username=admin,password=123
2、Cookie的作用
- 和Session共同保存某种状态的
3、Cookie的保存位置
- Cookie可以保存在浏览器中,浏览器关闭的时候Cookie就会消失,此时同Session
- Cookie还可以保存到本地
//想把cookie保存在本地
//参数为需要保存的时间,单位为秒
//浏览器关闭的时候,并没有销毁这个cookie
//参数为正数的时候
//cookie.setMaxAge(60*60);//当前cookie被保存,关闭浏览器再开,还是可以获取到这个数据
//参数为负数的情况
cookie.setMaxAge(-3600);//设置负数和不设置是一样的,关闭浏览器,就清空cookie
//参数为0的情况
cookie.setMaxAge(0);//目的是为了去除同名的cookie
三、Cookie和Session的区别
1、存储位置
- Session是存储在服务器中的
- Cookies是存储在浏览器中的
2、存储数据的格式
- Session可以存储任意数据
- Cookie只能存储字符串
3、安全性
- Session的安全性高于Cookie,因为Cookie是存储在浏览器,而Session是存储在服务器中,服务器相对来说更加安全
4、存储个数
- Cookie的存储个数是有限制的,每个浏览器都不一样
- Session可以存储的数量更多
5、创建的方法不同
- Session的创建方法
//请求对象直接调用getSession方法
HttpSession session = req.getSession();
- Cookie的创建方法
//需要new对象
Cookie cookie = new Cookie("username","admin");