现在的位置: 首页 > 综合 > 正文

JSP 唯一登陆判断

2013年04月13日 ⁄ 综合 ⁄ 共 2127字 ⁄ 字号 评论关闭

原理说明:

在application保存所有用户名,和其登陆所产生的SESSIONID,同时把用户的信息存于当前session里面。

当又有用户登陆的时候,更新session信息,同时检测application里面,用户名和sessionid是否一致,

如果不一致,则注销前面的session.

 

代码实现:

JSP检测:

<%
 //session检测
 eshop.member_sys.memberBean mb = (eshop.member_sys.memberBean)session.getAttribute("LoginMember"); 
 //out.println(mb);
 //out.println(mb.getId());
 //out.println();
 if(null!=mb)
 {
  java.util.Hashtable htb = (java.util.Hashtable)application.getAttribute("MemberList");
  String memberSid = (String)htb.get(mb.getAccount());
  if (session.getId().equals(memberSid)) {
   out.print( "hi,欢迎"+mb.getAccount()+"的到来! | <a href=admin/member_sys/DealWithCenter.jsp?action=loginOut>注销</a>");
  } else {
   session.removeAttribute("LoginMember");
   session.invalidate();
  }
  
 
 } else {
 %>
  <a href='reg.jsp'>注册</a> | <a href='login.jsp'>登录</a>
 <%
 }
 %>
 

登陆处理:Java

package eshop;

import java.util.Enumeration;
import java.util.Hashtable;

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

import eshop.member_sys.memberBean;

/**
 * 记录在线客服个数 和 进行克服唯一登陆判断
 *
 * @author wei
 *
 */
public class Servicer {
 private static Servicer servicer;

 private static String sessionName = "LoginMember";

 //private static Hashtable ht = new Hashtable();

 private static String sessionList = "MemberList";

 private ServletContext sc;

 public Servicer(ServletContext sc) {
  this.sc = sc;
 }

 public static Servicer getInstance(ServletContext sc) {
  if (servicer == null)
   servicer = new Servicer(sc);
  return servicer;
 }

 /**
  * 用户唯一登陆
  * @param mb
  * @param session
  * @param account
  */
 public void setService(memberBean mb, HttpSession session, String account) {
  //StringBuffer Str = new StringBuffer(4096);
  //Str.append(gsid);
  //Str.append(kfid);
  session.setAttribute(sessionName, mb);

  //System.out.println(">>>sessionid<<<<" + session.getId());
  if (sc.getAttribute(sessionList) == null) {// 第一次登陆
   Hashtable htb = new Hashtable();
   htb.put(account, session.getId());
   sc.setAttribute(sessionList, htb);
  } else {// 第二次登陆后第一次无效
   Hashtable htb = (Hashtable) sc.getAttribute(sessionList);

   String key = null;

   if (htb.containsKey(account)) {
    //更新session
    htb.remove(account);

   }
   htb.put(account, session.getId());

   sc.setAttribute(sessionList, htb);

  }
 }
}

抱歉!评论已关闭.