Servlets 从servlet获取本地数据

Servlets 从servlet获取本地数据,servlets,hashmap,singleton,containers,tomcat6,Servlets,Hashmap,Singleton,Containers,Tomcat6,大家好,我正在做一个网络项目。我正在使用ApacheTomcat6.0.41作为servlet容器。直截了当地说。我有一个单音类,其中存储了所有数据。它包含对数据的哈希映射的引用,这些数据是从.dat文件中的硬盘读取的,随后从servlet访问,然后作为JsonArray发送到.jsp页面。当我使用这个单音类在公共静态main函数中本地读取数据时,数据就在那里,我可以自由地操作它。另一方面,当servlet试图通过相同的函数读取数据时,数据根本无法读取,引用指向空哈希映射。还有一件事,我只在同事

大家好,我正在做一个网络项目。我正在使用ApacheTomcat6.0.41作为servlet容器。直截了当地说。我有一个单音类,其中存储了所有数据。它包含对数据的哈希映射的引用,这些数据是从.dat文件中的硬盘读取的,随后从servlet访问,然后作为JsonArray发送到.jsp页面。当我使用这个单音类在公共静态main函数中本地读取数据时,数据就在那里,我可以自由地操作它。另一方面,当servlet试图通过相同的函数读取数据时,数据根本无法读取,引用指向空哈希映射。还有一件事,我只在同事的电脑上注意到了这个问题,它在我的电脑上运行良好。有什么建议吗?:)

这行代码在servlet中不输出任何内容,当我在本地调用.dat文件时,从该文件读取整个集合

    System.out.println(Baza.getInstance().getMapaKorisnika().values());
因此,在getInstance()函数中调用ucitajPodatke()

        public static Baza getInstance()
{
    if (instance == null)
    {
        instance = new Baza();
        instance.ucitajPodatke();

    }
    return instance;
}

    public void ucitajPodatke(){

    try {
        File file;

        file = new File("korisnici.dat");
        if (file.exists()) {
            ObjectInputStream in = new ObjectInputStream(new FileInputStream("korisnici.dat"));
            try {
                mapaKorisnika = (HashMap<String, Korisnik>) in.readObject();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            in.close();
        } }
publicstaticbaza getInstance()
{
if(实例==null)
{
instance=new Baza();
instance.ucitajPodatke();
}
返回实例;
}
公共无效ucitajPodatke(){
试一试{
文件;
file=新文件(“korisnici.dat”);
if(file.exists()){
ObjectInputStream in=新的ObjectInputStream(新文件InputStream(“korisnici.dat”);
试一试{
mapaKorisnika=(HashMap)in.readObject();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}catch(classnotfounde异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
in.close();
} }
然后是一个getter:

    public HashMap<String, Korisnik> getMapaKorisnika() {
    return mapaKorisnika;
}
public HashMap getMapaKorisnika(){
返回mapaKorisnika;
}

添加更多详细信息。显示更多代码。如何以及何时加载数据?使用您的调试器。逐步检查代码,看看会发生什么。我可以确定您尝试打开文件时没有给出完整路径。文件实际位于何处,您如何确保servlet能够找到它?第一个system.out.println()当我在本地调用它时写入所有数据,其中有一个主函数我的一台计算机上只有这个问题是的,现在这个问题也突然出现在我的计算机上我真的找不到它的原因我已经编辑了这篇文章,非常感谢你的帮助