Web学习之Session

1,什么是Sessionhtml

Session通常译为会话,是解决Http协议的无状态问题的方案,能够将一次会话中的数据存储在服务器端的内存中,保证在下一次的会话中可使用。java

在客户端浏览器第一次向服务器端发送请求时,服务器端会为这个客户端建立独有的Session,并具备惟一的Session ID,存储在服务器端的内存中。在客户端第二次访问服务器端时,会携带Session ID在请求中,服务器端会根据Session ID查找对应的Session信息,进行进一步地操做。apache

在JavaEE中提供了javax.servlet.http.HttpSession接口,经过该接口能够将共享的数据内容存储在HttpSession对象中,从而解决Http协议的无状态问题浏览器

2,Session与cookie的区别缓存

Session与Cookie都是解决Http协议的无状态问题,可是二者之间仍是存在必定区别的:安全

  • Cookie数据存储在客户端的浏览器内存中或本地缓存文件中,Session数据存储在服务器端的内存中。
  • Cookie数据存储安全性较低,Session数据存储安全性较高。
  • Session数据存储在服务器端内存中,访问增多时,下降服务器端性能。而Cookie则不会对服务器端性能形成影响。
  • 单个Cookie存储的数据最大是4KB,一个网站只能存储20个Cookie。Session则没有这个问题。
  • Session在关闭浏览器时失效,而持久Cookie则能够存储更长有效时间。

总的来讲,Session与Cookie各有优点,不能简单来讲谁更优。具体用法要考虑具体案例状况而定。服务器

3,Session的实现原理cookie

在idea中使用上一个程序进行调试,访问servlet并抓取内容,最后发现实际获得的是org.apache.catalina.session.StandardSession对象,该对象是由Tomcat服务器的Session池建立,并为该对象建立惟一的ID值。session

 

 最后结论:ide

由于Session使用的是会话Cookie,因此当浏览器关闭后,Session会失效。从新打开浏览器访问对应Servlet时,服务器端会从新建立Session对象。可使用持久Cookie来延长Session的有效时间。

3,Session的额生命周期

  • Session的建立:在客户端第一次向服务器端发送请求,并执行request.getSession()方法时。
  • Session的销毁:
    • 不正常关闭浏览器时。(正常关闭浏览器,Session信息被序列化到硬盘中,保存在Tomcat服务器安装目录/work目录)
    • Session信息过时时(Session默认的有效时间为30分钟)。

      能够利用setMaxInactiveInterval(int interval)方法设置Session的有效时间。

    • 在服务器端程序中执行session.invalidate()方法,手动销毁Session对象。

 

摘抄自:https://www.cnblogs.com/aaron911/p/7889353.html

 

因为还在初学阶段,对session的理解还不太透彻,只好经过别人已有的总结来理解session。

相关文章
相关标签/搜索