会话
- 会话
- 书面语: 一个终端用户与交互系统进行通讯的过程
- 实例:用户打开一个浏览器,点击了很多个链接,访问了很多个网站,关闭浏览器,这个过程可以称为会话
- 有状态会话
- 书面语:一个交互系统能记住之前使用过的用户
- 实例:用户打开了一个网页,又关闭了这个网页,第二次打开这个网页时网站知道这个用户之前登录过
无状态会话
cookie
- 客户端技术
- 响应,请求
- session
- 服务器技术
- 利用这个技术,可以保存用户的会话信息,我们将信息或数据放在Session中
-
Cookie
cookie的创建
cookie的获取
cookie的限制
一个cookie只能保存一个信息
- 大部分浏览器的一个web站点只允许存储20个cookie
- Cookie有大小限制4kb
-
删除Cookie
不设置有效期,关闭浏览器,自动失效
- 设置有效期为0
cookie.setMaxAge(0);
Session
什么是Session
- 浏览器第一次发送请求到服务器端,服务器端创建一个Session,同时会创建一个特殊的Cookie(name为JSESSIOND的固定值,value为session对象的ID),然后将该Cookie发送至浏览器端
- 浏览器第N次发送请求到服务器时,会携带name为JSESSION的Cookie对象
- 服务器端根据cookie对用的session_id查询Session对象,从而区分不同的用户
- 关闭浏览器后,原来name为JSESSION的cookie存储的session_id就会消失,也就不能再找到对应的Session,所以需要重新进行第一步
- 所以由于关闭浏览器不会导致服务器端的Session被删除,所以服务器会对Session设置一个失效时间。
Session的相关使用
```java //得到Session HttpSession session = req.getSession(); //给Session中存东西 session.setAttribute(“name”,new Person(“哈哈哈”,1)); //获取Session的ID String sessionId = session.getId();
//判断Session是不是新创建 if (session.isNew()){ resp.getWriter().write(“session创建成功,ID:”+sessionId); }else { resp.getWriter().write(“session以及在服务器中存在了,ID:”+sessionId); }
//Session创建的时候做了什么事情; Cookie cookie = new Cookie(“JSESSIONID”,sessionId); resp.addCookie(cookie);
//手动注销Session session.invalidate(); ```
Session与Cookie的区别
- cookie数据保存在客户端,session数据保存在服务器端
- session
- 数据都保存在服务器端,客户端只发送session_id,以确定用户权限。不能伪造。
- cookie
- 数据都保存在客户端。若cookie存储了数据,发送请求时会将数据一起发送给用户端。这些数据有一定的特殊标记。服务器会解释为cookie变量。若能截获某用户的cookie变量,则可以伪造数据发送过去。
- 将登录信息等重要信息放到Session,其他信息如果必要的话可以保存在cookie中

