Cookie和Session的介绍和简单使用(什么是会话技术)

11 篇文章 0 订阅

1.会话技术的简介

会话技术是帮助服务器 记住客户端状态(区分客户端)。每个客户访问服务器端资源时,服务器并不知道该客户端是谁,但是为了识别不同的客户端,所以产生了会话技术。从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,为一次会话。会话技术是用于记录一次会话中客户端的状态和数据的。它可以分为两种会话技术:一种被称为Cookie技术;另一种被称为Session技术。

2.Cookie技术

Cookie技术是将用户数据存储到客户端的技术,它能够减少服务器d的存储压力,但是安全性相对于Session技术来说比较低,因为客户端可以清除Cookie。

//创建Cookie的函数
Cookie cookie = new Cookie(String cookieName,String cookieValue);

Cookie的cookieName和cookieValue都只能是字符串,而且有一个非常重要的地方就是Cookie不能存中文。当浏览器关闭的时候,没有设置持久化时间的Cookie信息会被销毁(也叫会话级别的Cookie),设置了持久化时间的Cookie信息就会存储到浏览器的磁盘文件中。利用设置持久化的时间也可以实现对Cookie的删除(把参数时间设置为0秒即可)。

//设置持久化的参数,参数单位是秒
cookie.setMaxAge(int seconds);

//删除cookie
cookie.setMaxAge(0);

当我们的客户端携带了Cookie的时候,我们可以通过设置其携带路径,限制Cookie的携带:

//设置携带路径的函数
cookie.setPath(String path);

cookie.setPath("/test"); //代表访问test应用中的任何资源都携带cookie

cookie.setPath("/"); //代表访问该WEB应用服务器中的任何资源都携带cookie

服务端创建并且设置好Cookie的内容后,就需要向客户端发送Cookie:

//向客户端发送Cookie
response.addCookie(Cookie cookie);

当服务端向客户端发送了Cookie之后,客户端则需要获取其Cookie的内容:

//获取cookie,返回的是一个Cookie的数组
Cookie[] cookies = request.getCookies();

最后通过遍历数组来获取我们需要的内容。

3.Session技术

Session技术是把数据存储到服务器端的技术,会为每个客户都创建一块内存空间存储客户的数据,但是客户端需要每次d都携带一个标识ID去服务器中寻找属于自己的内存空间,而且Session技术是基于Cookie技术上实现的,借助Cookie来存储客户的唯一标识JSESSIONID。Session技术把数据存储到服务器端,造成服务器端的压力较大,但是安全性相对于Cookie来说比较好。

创建Session对象:

//通过request调用Session
HttpSession session = request.getSession();

此方法会获得专属于当前会话的Session对象,如果服务器端没有该会话的Session 对象会创建一个新的Session返回,如果已经有了属于该会话的Session直接将已有 的Session返回(实质就是根据JSESSIONID判断该客户端是否在服务器上已经存在 session了)

往Session中存储数据:

//设置Session中存储值(包括名字和对象)
session.setAttribute(String name,Object obj);
//通过名字来获取Session的值
session.getAttribute(String name);
//通过名字来删除Session里面的对象
session.removeAttribute(String name);

Session的手动销毁:

session.invalidate();

Session也是一个域对象,所以,相应地它也具有生命周期,它的作用范围是一次会话。当第一次调用request.getSession()的时候,Session对象被创建,Session对象的销毁有以下三种方法:服务器非正常关闭;Session过期或者失效;手动调用session.invalidate()函数进行销毁。而Session过期或者失效是根据当前的WEB应用服务器的配置来进行判断的,从不操作服务器端的资源开始计时,经过默认的一段之间后Session自动销毁。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值