session 用户是否第一次登录及处理.txt
2013-01-05 18:59
246 查看
package com.mobile.util;
import javax.servlet.http.*;
import java.util.*;
public class SessionListener implements HttpSessionListener{
private static HashMap bUserInfo = new HashMap();//保存sessionID和username的映射
/**以下是实现HttpSessionListener中的方法**/
public void sessionCreated(HttpSessionEvent se){
}
public void sessionDestroyed(HttpSessionEvent se){
bUserInfo.remove( se.getSession().getId() );
}
/*
* isAlreadyEnter-用于判断用户是否已经登录以及相应的处理方法
* @param sUserName String-登录的用户名称
* @return boolean-该用户是否已经登录过的标志
*/
public static boolean isAlreadyEnter(HttpSession session,String bUserName){
boolean flag = false;
if(bUserInfo.containsKey(bUserName)){//如果该用户已经登录过,则使上次登录的用户掉线(依据使用户名是否在bUserName中)
flag = true;
//遍历原来的hUserName,删除原用户名对应的sessionID(即删除原来的sessionID和bUserInfo)
Iterator iter = bUserInfo.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
if( ( (String)val ).equals(bUserName) ){
bUserInfo.remove(key);
}
System.out.println( "---bUserInfo = " + bUserInfo);
}
bUserInfo.put( bUserName,mid );//添加现在的sessionID和bUserInfo
System.out.println( "bUserInfo = " + bUserInfo);
}
else{//如果该用户没登录过,直接添加现在的sessionID和username
flag = false;
bUserInfo.put(bUserName,mid);
System.out.println( "bUserInfo = " + bUserInfo);
}
return flag;
}
/*
* isOnline-用于判断用户是否在线
* @param session HttpSession-登录的用户名称
* @return boolean-该用户是否在线的标志
*/
public static boolean isOnline(HttpSession session){
boolean flag = true;
if( bUserInfo.containsKey( session.getId() ) ){
flag = true;
}
else{
flag = false;
}
return flag;
}
}
web.xml
<listener>
<listener-class>com.mobile.util.SessionListener</listener-class>
</listener>
import javax.servlet.http.*;
import java.util.*;
public class SessionListener implements HttpSessionListener{
private static HashMap bUserInfo = new HashMap();//保存sessionID和username的映射
/**以下是实现HttpSessionListener中的方法**/
public void sessionCreated(HttpSessionEvent se){
}
public void sessionDestroyed(HttpSessionEvent se){
bUserInfo.remove( se.getSession().getId() );
}
/*
* isAlreadyEnter-用于判断用户是否已经登录以及相应的处理方法
* @param sUserName String-登录的用户名称
* @return boolean-该用户是否已经登录过的标志
*/
public static boolean isAlreadyEnter(HttpSession session,String bUserName){
boolean flag = false;
if(bUserInfo.containsKey(bUserName)){//如果该用户已经登录过,则使上次登录的用户掉线(依据使用户名是否在bUserName中)
flag = true;
//遍历原来的hUserName,删除原用户名对应的sessionID(即删除原来的sessionID和bUserInfo)
Iterator iter = bUserInfo.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
if( ( (String)val ).equals(bUserName) ){
bUserInfo.remove(key);
}
System.out.println( "---bUserInfo = " + bUserInfo);
}
bUserInfo.put( bUserName,mid );//添加现在的sessionID和bUserInfo
System.out.println( "bUserInfo = " + bUserInfo);
}
else{//如果该用户没登录过,直接添加现在的sessionID和username
flag = false;
bUserInfo.put(bUserName,mid);
System.out.println( "bUserInfo = " + bUserInfo);
}
return flag;
}
/*
* isOnline-用于判断用户是否在线
* @param session HttpSession-登录的用户名称
* @return boolean-该用户是否在线的标志
*/
public static boolean isOnline(HttpSession session){
boolean flag = true;
if( bUserInfo.containsKey( session.getId() ) ){
flag = true;
}
else{
flag = false;
}
return flag;
}
}
web.xml
<listener>
<listener-class>com.mobile.util.SessionListener</listener-class>
</listener>
相关文章推荐
- session失效,使用ajax请求数据被拦截,此时正常的处理逻辑是跳到登录界面,而不是界面没有变化(java判断是否是ajax请求)
- 用户二次登陆,干掉第一次登录的session
- django用户登录,是否记住用户登录状态的session实现
- java采用DateFormat日期格式化方法判断用户今天是否第一次登录(比较简单)
- 在ASP.NET中怎么用SESSION判断用户是否登录
- 在ASP.NET中怎么用SESSION判断用户是否登录?
- 登录判断 之 asp.net 使用继承类的Session,判断用户是否登录
- 检查session判断用户是否退出登录
- flex(替代session过期)用户长时间不操作要求重新登录的处理
- flex(替代session过期)用户长时间不操作要求重新登录的处理
- php通过session判断用户是否登录
- 在ASP.NET中怎么用SESSION判断用户是否登录
- Java web应用用户是否登录验证过滤处理机制
- 在ASP.NET中用SESSION判断用户是否登录
- 用session判断此用户是否第一次登陆
- flex(替代session过期)用户长时间不操作要求重新登录的处理
- JSP透过session判断用户是否登录
- 在ASP.NET中怎么用SESSION判断用户是否登录?
- 在ASP.NET中怎么用SESSION判断用户是否登录?
- 判断用户session 是否过期,如果过期,让用户重新登录