浅谈会话技术(session、cookie)

会话技术(session、cookie)

会话:
一次会话中包含多次请求和响应。
什么是一次会话:浏览器第一次给服务器发送请求开始——>任意一方断开为止。
功能:在一次会话的范围内,多次请求之间共享数据。

cookie技术:

在一次会话多次请求之间传递数据,数据保存在客户端
cookie的使用:
步骤:

	//1.创建cookie对象,绑定数据
		new Cookie(String name,String value);
	//2.响应cookie对象到浏览器
		response.addCookie();
	//3.获取cookie对象,获取数据。
		Cookie[]  cookies = request.getCookies()

cookie原理:
通过Http协议中的响应头set-cookie和请求头cookie完成的。
在这里插入图片描述

cookie的注意事项

  • 一次可以发送多个cookie
  • cookie在浏览器中的保存时间
    • 默认情况下:当浏览器关闭后cookie被销毁
    • 持久化存储:
      • setMaxAge(int seconds)方法
        • 正数:将cookie存储到硬盘中,数字大小就是cookie的存活时间
        • 负数:默认
  • cookie的共享问题
    • 默认设置当前项目目录
      setPath("/虚拟目录");
      /day03
      只要请求的路径在 上边虚拟目录下都可以访问。
    • 如果需要在多个项目之间共享,可以设置
      setPath("/");
    • 浏览器对单个cookie 的数据大小有限制(4k),同一个域名下的总cookie个数也有限制(<20)

session技术:

在一次会话的多次请求之间共享数据,将数据保存在服务器端session对象中。
session的使用:

//获取session对象
  request.getSession();//不写的话getSession(true); //直接获取session,如果session不存在,就创建一个。
  request.getSession(false);// 获取已经存在的session对象,如果不存在获取到null。
//使用session对象
      setAttribute(String name,Object value);//设置session的值
      getAttribute(name);//根据session的名字,获取session的值
      removeAttribute(String name);//删除session 
  • 如果使用请求的转发,可以通过request将数据转发到jsp页面,但是导致页面的路径不会改变。
  • 如果使用重定向,可以改变地址栏路径,但是不能通过request传输数据,所以此时用session进行数据的共享。
  • request 在一次请求之间共享数据。
  • session在一次对话(多次请求)之间共享数据。

session原理分析
session的实现是依赖于cookie的
在这里插入图片描述
session的注意事项

  • 当客户端关闭后,再次打开两次获取的session不是同一个。如果想保证是同一个,可以通过设置cookie来完成。
         Cookie c = new Cookie("JSESSIONID",session.getId());
         c.setMaxAge(60*60);
         response.addCookie(c);
  • 客户端不关闭,服务器关闭,两次获取的session不是同一个。
    但是要确保数据不丢失。
    session钝化:在服务器正常关闭之前将数据序列化到硬盘上。
    session活化:在服务器启动过后将序列化到硬盘上的文件再读取到session对象中。
    session的失效时间
    1.服务器关闭
    2.session对象调用invalidate()方法 手动失效
    3.session默认失效时间是30分钟
    可以配置修改 tomcat—>conf目录—》web.xml—>session-config

session的特点

  • session用于存储一次共享会话的多次请求的数据,在服务器端。
  • session可以存储任意数据类型,任意大小的数据。

cookie和session的区别:

1:session存在服务器端;cookie存在客户端
2:session由服务器自己创建;Cookie也是服务器写进去响应到客户端
3:session存的对象,每一个客户端独立;Cookie存的是字符串,也是每一个客户端独享
4:客户端访问服务器,会带着一个jsessionid,如果没有服务器自动创建一个响应给客户端,下次请求带着,session靠jsessionid进行识别用户。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值