web会话技术(Cookie与Session)

本文详细介绍了Cookie和Session在Web开发中的作用,包括它们的工作原理、操作方法、持久化存储、范围以及特点和适用场景。Cookie存储在客户端,安全性低,适用于简单数据;Session存储在服务器,安全性高,适用于复杂数据共享,但可能影响服务器性能。
摘要由CSDN通过智能技术生成

Cookie和Session是web项目中的两种常用会话技术,功能是实现会话中多次请求之间的数据存储和数据共享。

会话指的客户端浏览器与服务器之间的交流过程。客户端浏览器第一次向服务器发送请求时,会话建立,直到双方之中有一方断开连接时,会话结束。

通俗来说,就如同你在网购时和人工客服之间的对话,你可能会询问商品的各种信息,从你向客服发送的第一句话开始,你们之间的会话建立,客服会根据你的问题给出相应解答,这就是你们之间的会话过程,当你询问完毕,退出人工客服时,会话结束。或者人工客服下班,断开连接时,会话结束。

1、Cookie

Cookie是一种将数据存储在客户端的会话技术,在访问服务器时,可以通过设置cookie对象,可以将数据存储在cookie通过响应消息传递给浏览器,浏览器在同一次会话的后续请求中,会携带cookie进行数据传递。

(1)操作方法

//1. 创建Cookie对象,绑定数据
	new Cookie(String name, String value);
//2. 发送Cookie对象
	esponse.addCookie(Cookie cookie);
//3. 获取Cookie,拿到数据
	Cookie[]  request.getCookies();  

添加的Cookie对象在会话中的后续请求中,可以request.getCookies()方法获取使用

(2)Cookie持久化存储

默认情况下,当浏览器关闭时,Cookie数据会自动销毁。

可以通过设置Cookie的存活时间,来将Cookie持久化存储到磁盘,确保在设定时间内再次建立会话时依旧能读取到前面的Cookie信息。

    Cookie c4 = new Cookie("msg4", "cookieData4");
    //setMaxAge(int seconds)方法
    c4.setMaxAge(-1); //默认 关闭浏览器后cookie销毁
    c4.setMaxAge(0); //参数设置为0,直接删除此cookie对象
    c4.setMaxAge(30); //30秒内有效,过时自动删除

(3)Cookie共享的范围

默认情况下,Cookie内的数据只在当前虚拟目录下共享

通过setPath(String path)方法将path设置为“/”,可以实现服务器内所有项目共享该cookie参数。

        Cookie c5 = new Cookie("msg5","小趴菜");

        //设置cookie访问路径 服务器下所有项目共享此cookie对象信息
        c5.setPath("/");

        response.addCookie(c5);

注意,此方法只对当前Cookie对象生效,其他地方添加的Cookie对象不受影响。

除此之外,Cookie还介意通过 setDomain(String path) 方法实现指定域名下才可访问Cookie对象信息。

(4)特点及使用场景

Cookie的特点是数据存储在客户端浏览器,安全性较低,且由于是通过HTTP传输,所以Cookie只能存储字符串类型的数据。浏览器对于Cookie的大小也有限制,通常单个Cookie大小不超过4kb,同一域名下Cookie个数不超过20个。

Cookie的一般用于存放一些简单的数据,如用户的登录信息、个性化设置等。

2、Session

Session基于Cookie实现,不过数据存储在服务器端,通过在Cookie中存放session ID的方式,确保了会话中后续请求所拿到的都是同一个session对象,达到数据共享的目的。

(1)操作方法

    //1. 获取HttpSession对象:
    HttpSession session = request.getSession();

    //2. 使用HttpSession对象方法:
    //获取对象值
    Object getAttribute(String name)  
    //设置数据对象
    void setAttribute(String name, Object value)
    //删除对象
    void removeAttribute(String name)  

会话中的后续请求可以根据Cookie中存储的session ID获取对应的Session对象,进而获取服务器session对象中的数据信息。

(2)Session持久化存储

当浏览器关闭时:

Session依赖于Cookie传递session ID实现,默认情况下浏览器关闭,cookie销毁,session信息也就销毁了,重启会话获取到的session并不是同一个。

要实现浏览器关闭后,重启会话拿到之前存数据的那个session对象,我们就需要持久化存储session ID,而session ID存储于Cookie中。所以只要设置将session ID存放到Cookie之后,再将Cookie持久化存储即可。

(3)session共享范围

默认情况下,session只在当前项目内共享,不同项目之间的Session对象互相独立,互不影响。

(4)特点及使用场景

Session的特点是数据存放在服务器端,数据安全性较高,且可以存放任意数据类型,数据大小也没有限制,使用更为灵活。

Session的使用场景有很多,身份验证、购物车订单等需要多页面共享用户信息的地方。

Session会话技术需要在服务器端进行存储和管理,因此可能会对服务器性能造成影响。在设计Web应用程序时,需要合理地使用Session对象,避免创建过多的Session对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值