public class UserHash{
public static void addLoginUser(String seId,String uName){
OutHash.put(seId,uName);
}
public static void removeLoginUser(String seId){
OutHash.remove(seId);
}
public boolean LoginUser(String seId,String uName){
if(OutHash.containsKey(seId)){
if(uName.equals(OutHash.get(seId))){
return true;
}
}
return false;
}
public static Hashtable OutHash = new Hashtable(50, 5F);
}
我在上面这个类中是定义了一个静态哈希表,
在下面这个类中又定义了一个监听器,来调用上面这个类的静态方法为静态哈希表付值,和删除值。 public class LoginUsers implements HttpSessionBindingListener{
public void valueBound(HttpSessionBindingEvent e){
if(e.getSession().getAttribute( "username ")!=null){
userhash.addLoginUser(e.getSession().getId(),(String)e.getSession().getAttribute( "username "));
}
}
public void valueUnbound(HttpSessionBindingEvent e){
userhash.removeLoginUser(e.getSession().getId());
}
private com.sso.UserHash userhash;
}
在下面这个线程里搜索监听的数据,可是发现在线程里根不取不到数据。但是在jsp不用线程是可以取到的,
自己觉得是某种安全机制使我不能用线程访问静态变量,不知道我说的对不,如果是这样有什么好的办法解决这个问题,使我在线程里也可以访问到静态哈希表里的数据?
那位高手帮帮我。我先谢谢了~~~
run(){
if(userhash.LoginUser(seId,uName)){
pass = true;
}
}
public static void addLoginUser(String seId,String uName){
OutHash.put(seId,uName);
}
public static void removeLoginUser(String seId){
OutHash.remove(seId);
}
public boolean LoginUser(String seId,String uName){
if(OutHash.containsKey(seId)){
if(uName.equals(OutHash.get(seId))){
return true;
}
}
return false;
}
public static Hashtable OutHash = new Hashtable(50, 5F);
}
我在上面这个类中是定义了一个静态哈希表,
在下面这个类中又定义了一个监听器,来调用上面这个类的静态方法为静态哈希表付值,和删除值。 public class LoginUsers implements HttpSessionBindingListener{
public void valueBound(HttpSessionBindingEvent e){
if(e.getSession().getAttribute( "username ")!=null){
userhash.addLoginUser(e.getSession().getId(),(String)e.getSession().getAttribute( "username "));
}
}
public void valueUnbound(HttpSessionBindingEvent e){
userhash.removeLoginUser(e.getSession().getId());
}
private com.sso.UserHash userhash;
}
在下面这个线程里搜索监听的数据,可是发现在线程里根不取不到数据。但是在jsp不用线程是可以取到的,
自己觉得是某种安全机制使我不能用线程访问静态变量,不知道我说的对不,如果是这样有什么好的办法解决这个问题,使我在线程里也可以访问到静态哈希表里的数据?
那位高手帮帮我。我先谢谢了~~~
run(){
if(userhash.LoginUser(seId,uName)){
pass = true;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货