Cookie与Session
Cookie&Session
1、会话
会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话
一个网站,怎么证明你来过?
客户端 -----> 服务端
- 服务端给客户端一个信件,客户端下次访问服务端带上信件就可以; cookie
- 服务器登记你来过了,下次你来的时候我来匹配你; session
2、保存会话的两种技术
cookie
- 客户端技术(响应,请求)
session
- 服务器技术,利用这个技术,可以保存用户的会话信息,我们可以把信息或者数据放在session中
常见场景:网站登录之后,下次不需要再登录,第二次访问直接上去
3、Cookie
- 从请求中拿到cookie信息
- 服务器响应给客户端cookie
//获得cookie
Cookie[] cookies = req.getCookies(); // 这里返回数组,说明cookie可能存在多个
cookie.getName() //获得cookie中的key
cookie.getValue() //获得cookie中的value
cookie.setMaxAge(24*60*60); //设置cookie的有效期
new Cookie("lastLoginTime", System.currentTimeMillis() + ""); //新建一个cookie
resp.addCookie(cookie); //xiang'y
Cookie一般会保存在本地的 用户目录下的/appdata
一个网站cookie是否存在上限?
- 一个Cookie只能保存一个信息;
- 一个web站点可以给浏览器发送多个cookie,最多存放20个cookie;
- Cookie大小有限制 4kb;
- 300个cookie,浏览器的上限
4、Session
什么是Session:
- 服务器会给每一个用户(浏览器)创建一个Session对象
- 一个Session独占一个浏览器,只要浏览器没有关闭,这个Session就存在
- 用户登录之后,当前整个网站的页面都可以都有记录
Session和Cookie的区别
- Cookie是把用户的数据写给用户的浏览器,浏览器保存;
- Session把用户的数据写到用户独占Session中,服务端保存(保存重要的信息,减少服务器资源的浪费);
- Session对象由服务器创建;
使用场景
- 保存一个用户的登录信息
- 购物车信息
- 在整个网站中经常会使用的数据,将他保存在Session中;
使用Session
// 得到Session
HttpSession session = req.getSession();
// 给Session中存东西
session.setAttribute("name",new Person("Cen",19));
// 获取Session的ID
String sessionId = session.getId();
// 判断Session是不是新创建的
session.isNew()
// 获取Session中保存的属性
System.out.println(session.getAttribute("name"));
// 手动清理Session
session.removeAttribute("name");
session.invalidate();
会话自动过期:web.xml配置
<!-- 设置Session默认的失效时间-->
<session-config>
<!-- 一分钟后Session失效-->
<session-timeout>1</session-timeout>
</session-config>

浙公网安备 33010602011771号