Cookie与Session

Cookie&Session

1、会话

会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话

一个网站,怎么证明你来过?

客户端 -----> 服务端

  1. 服务端给客户端一个信件,客户端下次访问服务端带上信件就可以; cookie
  2. 服务器登记你来过了,下次你来的时候我来匹配你; session

2、保存会话的两种技术

cookie

  • 客户端技术(响应,请求)

session

  • 服务器技术,利用这个技术,可以保存用户的会话信息,我们可以把信息或者数据放在session中

常见场景:网站登录之后,下次不需要再登录,第二次访问直接上去

3、Cookie

  1. 从请求中拿到cookie信息
  2. 服务器响应给客户端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>
posted @ 2022-03-29 13:24  CenGeng  阅读(46)  评论(0)    收藏  举报