session随笔

  ·由于cookie中不能保存很多信息,于是Session出现来完成这个功能。

  ·Session的作用就是在服务器保存一些保存一些用户的数据,然后传递给用户一个名字为JSESSIONID的Cookie,这个JESSIONID对应这个服务器中的一个Session对象,通过它就可以获取到保存用户信息的Session。

Session的创建

  ·Session的创建时机是在request.getSession()方法第一次被调用时。

   Session被创建后,同时还会有一个名为JSESSIONID的Cookie被创建。

   这个Cookie的默认时效就是当前会话。

Session的使用

  ·Session被创建后,对应的Cookie被保存到浏览器中,之后浏览器每次访问项目时都会携带该Cookie。

   当我们再次调用时会根据该JSESSIONID获取已经存在的Cookie,而不是在创建一个新的Cookie。

   如果Cookie中有JSESSIONID,但是JSESSIONID没有对应的Session存在,则会重新创建一个HttpSession对象,并重新设置JSESSIONID。

Session的时效(即存在时间)

  ·Session对象在服务器端不能长期保存,它是有时间限制的,超过一定时间没有被访问过的Session对象就应该释放掉,以节约内存。所以Session的有效时间并不是从创建对象开始计时,到指定时间后释放——而是从最后一次被访问开始计时,统计其“空闲”的时间

   在全局web.xml中能够找到如下配置:

<session-config>
<session-timeout>30</session-timeout>
</session-config>

  ( “30”表示30分钟;)

   也可以手动设置:

    session.setMaxInactiveInterval(int seconds)

Session对象的释放

  ·1 Session对象空闲时间达到了目标设置的最大值,自动释放

  2 Session对象被强制失效( session.invalidate()  )

   3 Web应用卸载

   4 服务器进程停止

Session的活化和钝化

  `Session钝化:Session在一段时间内没有被使用时,会将当前存在的Session对象序列化到磁盘上,而不再占用内存空间。

   Session活化:Session被钝化后,服务器再次调用Session对象时,将Session对象由磁盘中加载到内存中使用。  

  

   在Tomcat的配置文件conf/context.xml文件的根标签中加入如下代码

<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
  <StoreclassName="org.apache.catalina.session.FileStore"directory="mySession" />
</Manager>

   maxIdleSwap属性:指的Session闲置时间,当闲置一定时间以后,会自动钝化到硬盘中。(里面是秒)
    directory属性:Session钝化后的目标文件夹。

上一篇:Elasticsearch常用基础操作


下一篇:虚拟机找不到/mnt/hgfs挂载目录——debian与 vmware