Session保存在服务器端。为了获得更高的存取速度,服务器一般把Session放在内存里。每个用户都会有一个独立的Session。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。因此,Session里的信息应该尽量精简。
Session在用户第一次访问服务器的时候自动创建。需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session。如果尚未生成Session,也可以使用request.getSession(true)强制生成Session。
Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。用户每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(acTIve)”了一次。
由于会有越来越多的用户访问服务器,因此Session也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。
Session生命周期设置
Session存储在服务器端,一般放置在服务器的内存中(为了高速存取),Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session。
以下是对session的几种生命周期的设置:
一丶最粗暴的设置方式
在服务器对应的配置文件下的web.xml文件中修改《session-TIme-out》《/session-TIme-out》中的值。
如下图所示:
Tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限制session失效时间。
二丶常用也是比较简便的方法
在你的项目的web.xml文件中进行配置参数:
对应的xml代码如下所示:
《session-config》
《session-TImeout》20《/session-timeout》
《/session-config》
上面20的意思是会话的失效时间是20分钟。这里是按照分钟来计算。
三丶比较温顺的一种设置方式
在主页面/公共页面/或是在对应的Servlet下面的代码中添加如下代码:
session.setMaxInactiveInterval(你想设置的时间);
设置的时间是以秒计算,它是根据服务器来计算时间。
Http Session的方法
Object getAttribute(String);
Enumeration《String》 getAttributeNames();
long getCreationTime();
String getId();
String getLastAccessedTime();
Int getMaxInactiveInterval();
ServletContext getServletContext();
void invalidate();//销毁当前session
boolean isNew();
void removeAttribute();
void setAttribute(String, object);
void setMaxInactiveInterval(int);