简述Session

本人小白一枚,欢迎大家一起讨论学习,如有错误,还望大家指教。

简述:

Session是服务器端会话技术,能够在一次会话的多次请求间共享数据,将数据保存在服务端对象中。

原理:

Session的实现是依赖于Cookie的,当我们第一次创建Session对象时,服务器会给Session对象分配一个唯一的ID叫做SESSIONID,并把该值(SESSIONID=xxxxx)以Cookie的形式响应到客户端浏览器上,当我们第二次访问时,客户端浏览器会把第一次保存的Cookie信息即SESSIONID发送给服务器,服务器拿到SESSIONID并通过该ID在内存中查找并返回。
在这里插入图片描述

功能:

  • HttpSession request.getSession():获取HttpSession对象。
  • Object getAttribute(String name):通过key值获取域中属性。
  • void setAttribute(String name, Object value):设置session域中属性。
  • void removeAttribute(String name):通过key移除域中属性。
  • session.invalidate():销毁session对象。
  • String session.getId():获取Session对象的ID值。

思考:

  • 当客户端关闭后,服务器不关闭,两次获取的session是否是同一个?
    • 默认情况下,两次获取的不是同一个Session对象。
    • 如果需要相同,我们可以通过修改Cookie值中的SESSIONID的存活时间,让Cookie持久化保存,例如我们将存活时间设置为1小时。 new Cookie("JSESSIONID",session.getId()).setMaxAge(60*60); //发送cookie对象 response.addCookie(c);
  • 客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
    • 因为Session是保存在服务器的,所以一般来说不是同一个,但是要确保数据不丢失,tomcat自动完成以下工作
      • Session钝化:在服务器正常关闭之前,将session对象序列化到硬盘上。
      • Session活化:在服务器启动后,将Session文件转化为内存中的Session对象即可。
  • Session在什么时候被销毁?
    • 在服务器关闭时,就会销毁。
    • 调用session.invalidate()。
    • session默认失效时间为30分钟。可以在服务器的配置文件中配置。如tomcat中的web.xml文件。
<session-config>
		<session-timeout>30</session-timeout>
</session-config>
  • session的特点?
    • session用于存储一次会话中的多次请求的数据,存储在服务器中。
    • session可以存储任意类型,任意大小的数据。
  • Session与Cookie的区别?
    • session存储在服务器端,而cookie存储在客户端。
    • session没有数据大小限制,而cookie针对于不同浏览器客户端有不同的限制。
    • session相对来说比较安全,而cookie因其存储在服务器相对来说不安全。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值