Session与Cookie

Http协议是无状态无连接的,因此一个用户在一个网站做连续操作需要不断提供身份信息,因此便有了Session与Cookie。

Session:

服务器进行描述用户身份信息的方式(服务器端)
当用户第一次访问浏览器时,浏览器发送请求给服务器,服务器便会自动生成一个Session和一个Session ID 用来标志该Session。并且通过其响应浏览器。当该用户第二次访问时,浏览器发出请求并发出该Session ID(Session ID存储在Cookie中),服务器便会根据这个Session ID找到该用户对用的Session。
Session可存储任何类型的数据

当浏览器支持Cookie时,Session仅本窗口及其子窗口有效;
当浏览器不支持Cookie时,运行Session需要使用URL地址重写的方式,将SessionID直接加在URL路径后面,否则Session无效;

  • 创建HttpSession的代码示例如下:
//返回当前的HttpSession,如果没有,创建一个
HttpSession httpSession = req.getSession();
//返回当前的HttpSession,如果没有,返回null
HttpSession httpSession = req.getSession(false);
//返回当前的HttpSession,如果没有,创建一个
HttpSession httpSession = req.getSession(true);
  • HttpSession赋值代码示例如下:
//setAttribute方法中第一个参数是String类型作为key,第二个参数是Object类型作为value
httpSession.setAttribute("city","xian");
httpSession.setAttribute("location","LinTong");

Cookie:

仅浏览器存储数据的一种方式(客户端)
Cookies是Session对象的一种,但其不会占用服务器资源,Cookie将所有数据保存在浏览器端,只要不关闭浏览器则Cookie变量一直有效,能够保证长时间不掉线。Cookie作为HTTP header的一部分,其传输由HTTP协议控制,此外,可以控制Cookies的有效时间。浏览器通常支持每个网站高达20个Cookies。每个用户有自己独立的存储Cookies的空间,互相独立。单个Cookie的大小有限仅能存放4kb左右的数据

  • 生成Cookies
//创建Cookie
Cookie cookie = new Cookie("city", "xian");
//HTTP响应时会将Cookie信息返回给浏览器
resp.addCookie(cookie);
  • 获取Cookies
Cookie[] cookies = req.getCookies();
Cookie cityCookie = null;
if (cookies != null) {
    for (Cookie c : cookies) {
        if (c.getName().equals("city")) {
            cityCookie = c;
       }
   }
}
String cityName = cityCookie != null ? cityCookie.getName() : "";
  • 删除Cookies
Cookie rmCookie = new Cookie("city", "");
//存活时间0秒,即设置cookie立即过期,也就是删除
rmCookie.setMaxAge(0);
resp.addCookie(rmCookie);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值