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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix