`
utopialxw
  • 浏览: 367743 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • java
 
阅读更多
遍历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。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics