遍历 Session,Request;设置session超时时间

遍历Session
java.util.Enumeration   e   =   request.getSession().getAttributeNames(); 

while( e.hasMoreElements()) {
String sessionName=(String)e.nextElement();
out.println("\nsession item name="+sessionName);
out.println("\nsession item value="+request.getSession().getAttribute(sessionName));
}

遍历request
		
Map map = new HashMap();
map = request.getParameterMap();
for(Iterator iter = map.entrySet().iterator();iter.hasNext();){
Map.Entry element = (Map.Entry)iter.next();
String strKey = element.getKey().toString();
out.println("\nkey="+strKey);
String[] value=(String[])element.getValue();
if(value.length>0){
for(int i=0;i<value.length;i++)
out.println("\nvalue"+String.valueOf(i)+"="+value[i].toString());
}
int a=1;
}


设置session的过期或超时时间,有三个地方:
1:tomcat的web.xml中,该单位为分:
<session-config>
<session-timeout>720</session-timeout>
</session-config>

2:项目的web.xml中,该单位为分:
<session-config>
<session-timeout>720</session-timeout>
</session-config>

3:用代码设置session的最大有效值:
//单位为秒
public static Integer SessionMaxInactiveInterval=720*60;//session有效时间 :12小时
javax.servlet.http.HttpSessionEvent.getSession().setMaxInactiveInterval(SessionMaxInactiveInterval);


以上三个的优先级:3>2>1

其他一些有用的说明:

1、Session超时理解为:服务器创建了 一个Session给客户端的浏览器,浏览器每次访问的时候带着这个session与服务器进行交互,保证两者数据的一一对应。由于客户端长时间(休眠时间)没有与服务器交互,服务器将此Session销毁,客户端再一次与服务器交互时之前的Session就 不存在了。



2、若访问服务器session超时(本次访问与上次访问时间间隔大于session最大的不活动的间隔时间)了,即上次会话结束,但服务器与客户端会产生一个新的会话,之前的session里的属性值全部丢失,产生新的sesssionId。


3.客户端与服务器一次有效会话(session没有超时),每次访问sessionId相同,若代码中设置了session.setMaxInactiveInterval()值,那么这个session的最大不活动间隔时间将被修改,并被应用为新值。


4.Session的销毁(代表会话周期的结束):在某个请求周期内调用了Session.invalidate()方法,此请求周期结束后,session被销毁;或者是session超时后自动销毁。客户端关闭浏览器时session并不会被注销,只是那个session不能再用了——即客户关闭浏览器之后,服务器端并不知道,但是与浏览器进行交互的session在服务器那里还是存在的,就是没有客户端与它进行交互自然也就不会再用不能用了。因为用户打开浏览器进行访问时服务器会重新产生一个新的session给浏览器,以前的那个session只能等待过期被服务器自动注销。


5. 对于JSP,如果指定了<%@ page session="false"%>,则在JSP中无法直接访问内置的session变量,同时也不会主动创建session,因为此时JSP未自 动执行request.getSession()操作获取session。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值