由于目前还不会jdbc,所以我用了一个hashmap在服务器中存放用户名和密码。
服务器为多线程,但并没有在多线程中put hashmap,只用了containskey 和get方法,但返回值为不存在。为什么

解决方案 »

  1.   


    你的HashMap必须是全局唯一的,不能每次都是一个新的对象。也就是说你的HashMap在程序启动是已经存在的。大概如下这样class MapDB{
    private static Map<String,String> dbMap = new HashMap<>();publivc void addToDb(String key,String value){
        dbMap.put(key,value)
    } }
      

  2.   

    如果你的代码还是找不到KEY,那么你最好DEBUG调试下,看你的值有没有存进入,跟踪下……
      

  3.   

    如2楼说的,没有key?debug或者打印一下所有的key 是不是存在
      

  4.   

    package com.ice.home.web;import org.apache.commons.lang.StringUtils;import java.util.HashMap;
    import java.util.Map;public class HashMapTest {
        private static final Map<String, String> map;
        
        static {
            map = new HashMap<>();
            map.put("user1", "password1");
            // ....
        }
        
        public static boolean exists(String user){
            if(StringUtils.isEmpty(user)){
                return false;
            }
            
            return map.containsKey(user);
        }
        
        public static String getPassword(String user){
            if(StringUtils.isNotEmpty(user) && map.containsKey(user)){
                return map.get(user);
            }
            
            return null;
        }
    }
    欢迎光临我的博客
    http://happyshome.cn