<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/same-time-only-one-login-session/</link>
<title><![CDATA[限制同一时间同一帐号只能登陆一个]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Thu, 09 Sep 2010 17:16:37 +0000</pubDate> 
<guid>https://www.heckjj.com/same-time-only-one-login-session/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 微软雅黑;">其实我们实际应用中有很多地方需要做到唯一登陆，同一时间同一帐号只能登陆在一台电脑上的问题终于得到解决了。 <br/>后登陆的用户会把先登陆的用户踢下线 <br/>具体实现：sessionCheck： </span><br/><textarea name="code" class="java" rows="15" cols="100">package test;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionMapping;

public class sessionCheck 
&#123;
 
 private static sessionCheck sessioncheck;
 public sessionCheck(HttpServlet servlet) 
 &#123;
 &#125;
 public static sessionCheck getInstance(HttpServlet servlet) 
 &#123;
&nbsp;&nbsp;if (sessioncheck==null)
&nbsp;&nbsp;&#123;
&nbsp;&nbsp; sessioncheck=new sessionCheck(servlet);
&nbsp;&nbsp;&#125;
&nbsp;&nbsp;return sessioncheck;
 &#125; 
 public void setSession(String userName,HttpServlet servlet,HttpSession session,ActionMapping mapping) 
 &#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final ServletContext sc = servlet.getServletContext();//取得容器,容器中根据用户唯一标识userID存放session
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(sc);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(session);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (sc.getAttribute(userName) != null) 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 第二次登陆后第一次无效
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((HttpSession) sc.getAttribute(userName)).invalidate();// 清除第一次登陆的session
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(session);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sc.setAttribute(userName, session);//放入当前最新session
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mapping.findForward("sessionDestroy") ;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;

&#125;</textarea><br/>UserLoginForm：<br/><textarea name="code" class="java" rows="15" cols="100">sessionCheck.getInstance(this.getServlet()).setSession(userName, servlet, session, mapping);</textarea><br/>jsp： <br/><textarea name="code" class="java" rows="15" cols="100"><body&nbsp;&nbsp; ="sessionDestroy()">

< language="java" type="text/java">
sessionDestroy()
&#123;
&nbsp;&nbsp;alert("连接超时，或帐号已在别处登陆，请查证后重新登陆");
&nbsp;&nbsp;location.href = "UserLogin.jsp" ;
&#125;
</> </textarea><br/><span style="font-family: 微软雅黑;">这样在两台电脑上后登陆的人用户就会把先登陆的给踢掉，但是暂时还没实现在同一台电脑上后登陆的用户把先登陆的踢掉的功能<br/>上面是在后台实现的，如果要在JSP中做，直接appliction.getAttribute(userId)，appliction.setAttribute(userId,&nbsp;&nbsp; session)就行，application的我还没有去测试，有时间大家去试一下去。 </span><br/>Tags - <a href="https://www.heckjj.com/tags/%25E5%2590%258C%25E4%25B8%2580%25E6%2597%25B6%25E9%2597%25B4%25E5%2590%258C%25E4%25B8%2580%25E5%25B8%2590%25E5%258F%25B7/" rel="tag">同一时间同一帐号</a> , <a href="https://www.heckjj.com/tags/%25E5%2594%25AF%25E4%25B8%2580%25E7%2599%25BB%25E9%2599%2586/" rel="tag">唯一登陆</a> , <a href="https://www.heckjj.com/tags/session/" rel="tag">session</a>
]]>
</description>
</item><item>
<link>https://www.heckjj.com/same-time-only-one-login-session/#blogcomment</link>
<title><![CDATA[[评论] 限制同一时间同一帐号只能登陆一个]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/same-time-only-one-login-session/#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>