当前位置: 首页 > 后端技术 > PHP

销毁Session的方法有哪些?

时间:2023-03-29 20:55:53 PHP

Session,作为我们离不开的后台技术,它的出现主要是为了解决HTTP协议的无状态特性,解决用户状态的存储问题,而且往往会涉及到存储的时间问题,一起来看看吧在其销毁方法。销毁的方式是在默认时间到期时。过期时间自行设置,立即失效。关闭浏览器并关闭服务器。案例分析。会话默认存活时间为30分钟,即不操作界面的时间。一旦有操作,会话将重新启动。那么session的默认时间可以改吗?答案是肯定的。可以在Tomcat中的web.xml文件中修改。如下图所示:自己设置过期时间当然除了上面的修改方法,我们还可以在程序中设置session的生命周期,通过session.setMaxInactiveInterval(int);设置会话的最大非活动时间,单位为秒。HttpSessionsession=req.getSession();session.setMaxInactiveInterval(5);当然我们也可以通过getMaxInactiveInterval();来查看当前Session对象的最大不活跃时间;方法。立即失效或者我们可以通过session.invalidate();立即使会话无效的方法。session.invalidate();关闭浏览器session底层,依赖cookie实现,因为不同的用户访问服务器决定使用哪个session,所以在用户第一次访问服务器时,往往会通过一个sessionid存储给用户cookie结束,而cookie的生效时间是关闭浏览器,所以关闭浏览器时session也是无效的(因为没有sessionid对应)。如下图,关闭再打开,给浏览器重新分配一个sessionid。需要注意的是这里只有cookie是无效的。当你再次访问时,服务器会把你当作一个新用户,并为你创建另一个会话,而不会破坏之前的会话对象。关闭服务器当服务器异常关闭时,会话会被销毁;当服务器正常关闭时,session会被序列化到磁盘,在workspace的work目录下的SESSION.ser文件中,如果对象保存在session中,服务器会将该对象序列化到硬盘关闭时对象必须实现Serializable接口,下次启动服务时会自动加载到内存中。如下图所示,正常关机后,可以看到文件夹中多了一个SESSIONS.ser文件,重启服务器后该文件消失。展开~Cookie的销毁除了看到图中cookie的名字和内容外,我们还需要关心一个信息,过期时间,用来指定cookie什么时候过期。默认是当前浏览器关闭失效。我们可以手动设置cookie的有效时间(以过期时间计算),通过setMaxAge(intexpiry)设置cookie的最长有效时间;方法,以秒为单位。大于0的整数,表示存储的秒数;如果为负数,则表示不存储cookie;如果为0,则删除cookie。负整数:cookie的maxAge属性默认值为-1,表示只在浏览器内存中存活。一旦关闭浏览器窗口,cookie就会消失。正整数:表示cookie对象可以存活指定的秒数。当life大于0时,浏览器会将cookie保存到硬盘中。即使关闭浏览器或重新启动客户端计算机,cookie也会保留相应的时间。零:cookielife等于0是一个特殊值,表示cookie已失效!也就是说,如果原来的浏览器保存了这个cookie,你可以通过cookie的setMaxAge(0)来删除这个cookie。该cookie将从浏览器的内存和客户端的硬盘驱动器中删除。