Java设置session超时(失效)的时间

<div id="cnblogs_post_body" class="blogpost-body"><p>在通常系统登陆后,都会设置一个当前session失效的时间,以确保在用户长时间不与服务器交互,自动退出登陆,销毁session<br><span style="background-color: #ffffff;"><span style="color: #ff0000;">具体设置的方法有三种</span>:</span><br><span style="background-color: #00ffff;">1.在web容器中设置(以tomcat为例)</span><br>在tomcat-7.0\conf\web.xml中设置,如下是tomcat7.0中默认配置:</p> <div class="cnblogs_Highlighter sh-gutter"> <div><div id="highlighter_606455" class="syntaxhighlighter java"><div class="toolbar"><span><a href="#" class="toolbar_item command_help help">?</a></span></div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="java plain">&lt;session-config&gt;</code></div><div class="line number2 index1 alt1"><code class="java plain">&lt;session-timeout&gt;</code><code class="java value">30</code><code class="java plain">&lt;/session-timeout&gt;</code></div><div class="line number3 index2 alt2"><code class="java plain">&lt;/session-config&gt;</code></div></div></td></tr></tbody></table></div></div> </div> <p>tomcat默认session超时时间为30分钟,能够根据须要修改,负数或0为不限制session失效时间</p> <p>这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。因此若是在调试程序,应该是修改服务器端时间来测试,而不是客户端</p> <p><span style="background-color: #00ffff;">2.在工程的web.xml中设置</span><br>&lt;!--时间单位为分钟--&gt;</p> <div class="cnblogs_Highlighter sh-gutter"> <div><div id="highlighter_858241" class="syntaxhighlighter java"><div class="toolbar"><span><a href="#" class="toolbar_item command_help help">?</a></span></div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div><div class="line number2 index1 alt1">2</div><div class="line number3 index2 alt2">3</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="java plain">&lt;session-config&gt;</code></div><div class="line number2 index1 alt1"><code class="java plain">&lt;session-timeout&gt;</code><code class="java value">15</code><code class="java plain">&lt;/session-timeout&gt;</code></div><div class="line number3 index2 alt2"><code class="java plain">&lt;/session-config&gt;</code></div></div></td></tr></tbody></table></div></div> </div> <p> 这里的15是指15分钟失效</p> <p><span style="background-color: #00ffff;">3.经过java代码设置</span><br>session.setMaxInactiveInterval(30*60);//以秒为单位,即在没有活动30分钟后,session将失效</p> <p><span style="color: #ff0000;"><span style="background-color: #ffffff;">三种方式优先等级</span>:1 &lt; 2 &lt; 3</span></p> <p><span style="color: #ff0000;">在通常系统中,也可能须要在session失效后作一些操做</span>:<br>1.控制用户数,当session失效后,系统的用户数减小一个,控制用户数量在必定范围内,确保系统的性能<br>2.控制一个用户屡次登陆,当session有效时,若是相同用户登陆,就提示已经登陆了,当session失效后,就能够不一样提示,直接登陆<br>那么如何在session失效后,进行一系列的操做呢?<br>这里就须要用到监听器了,即当session由于各类缘由失效后,监听器就能够监听到,而后执行监听器中定义好的程序就能够了<br><span style="color: #ff0000;">监听器类为:HttpSessionListener类,有sessionCreated和sessionDestroyed两个方法</span><br>本身能够继承这个类,而后分别实现<br>sessionCreated指在session建立时执行的方法<br>sessionDestroyed指在session失效时执行的方法<br>例子:</p> <div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div> <pre><span style="color: #008080;"> 1</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> OnlineUserListener <span style="color: #0000ff;">implements</span><span style="color: #000000;"> HttpSessionListener{ </span><span style="color: #008080;"> 2</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> sessionCreated(HttpSessionEvent event){ </span><span style="color: #008080;"> 3</span> HttpSession session=<span style="color: #000000;">event.getSession; </span><span style="color: #008080;"> 4</span> String id=session.getId()+<span style="color: #000000;">session.getCreationTime(); </span><span style="color: #008080;"> 5</span> SummerConstant.UserMap.put(id,Boolean.TRUE);<span style="color: #008000;">//</span><span style="color: #008000;">添加用户</span> <span style="color: #008080;"> 6</span> <span style="color: #000000;"> } </span><span style="color: #008080;"> 7</span> <span style="color: #008080;"> 8</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> sessionDestroyed(HttpSessionEvent event){ </span><span style="color: #008080;"> 9</span> HttpSession session=<span style="color: #000000;">event.getSession; </span><span style="color: #008080;">10</span> String id=session.getId()+<span style="color: #000000;">session.getCreationTime(); </span><span style="color: #008080;">11</span> <span style="color: #0000ff;">synchronized</span>(<span style="color: #0000ff;">this</span><span style="color: #000000;">){ </span><span style="color: #008080;">12</span> SummerConstant.USERNum--;<span style="color: #008000;">//</span><span style="color: #008000;">用户数减-</span> <span style="color: #008080;">13</span> SummerConstant.UserMap.remove(id);<span style="color: #008000;">//</span><span style="color: #008000;">从用户组中移除掉,用户组为一个map</span> <span style="color: #008080;">14</span> <span style="color: #000000;"> } </span><span style="color: #008080;">15</span> <span style="color: #000000;"> } </span><span style="color: #008080;">16</span> }</pre> <div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" onclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div> <p>而后只须要把这个监听器在web.xml中声明就能够了</p> <p>&lt;listener&gt;<br> &lt;listener-class&gt;com.demo.OnlineUserListener&lt;/listener-class&gt;<br>&lt;/listener&gt;</p></div>javascript

相关文章
相关标签/搜索