gpt4 book ai didi

java - 如何在我的应用程序中传递当前登录的用户信息

转载 作者:行者123 更新时间:2023-12-02 09:42:58 24 4
gpt4 key购买 nike

我是编程和 Java 新手,正在使用 SQL 和 UI (Jframes) 在 JAVA 中构建小型应用程序

在用户输入用户名和密码后的登录框架中,我执行 SQL 选择查询来搜索该用户的 USER 表。如果查询返回 1 个单行,则会触发登录按钮事件处理程序并创建下一帧的对象。

几帧后,我有一个 SQL 插入 Activity ,其中我还必须插入发起插入的人员的 USER_ID(当前登录的用户)。

跨一系列框架类传递此信息的最佳实践是什么?

我最初的想法是将 user_id 作为参数传递到对象中,以便在每个框架类的构造函数中设置它。但问题是并非我所有的框架都真正需要这些数据。只有涉及插入的最后一帧才需要用户 ID。但为了到达该帧,我必须穿过所有其他帧。这似乎不是一个好的做法。

最佳答案

第一种方法

我想到的第一个可能性是使用 java.util.Properties 将应用程序状态存储在属性文件中。该方法是使用单例包装器,例如 ApplicationState 来读取/写入属性文件。这个单例类可以从所有框架访问,或者可以在构造函数内部传递该类的实例。

public class ApplicationState {

private static ApplicationState instance = new ApplicationState();

private ApplicationState() { }
public static ApplicationState getInstance( ) { return instance; }

public String read(String key) throws IOException {

try (InputStream input = new FileInputStream("path/to/config.properties")) {

Properties prop = new Properties();
prop.load(input);
return prop.getProperty(key);
}
}

...
}

第二种方法

然后我意识到一个更简洁的解决方案是使用 java.util.prefs.Preferences API。请参阅Preferences API了解详情。

class A {

public void login() {

Preferences prefs = Preferences.userNodeForPackage(com.mycompany.MyClass.class);

prefs.putInt("userId", 11);
...
}
}

class B {

public void insert() {

Preferences prefs = Preferences.userNodeForPackage(com.mycompany.MyClass.class);

int userId = prefs.getInt("userId", 0); // 0 is default identifier
...
}
}

此外,由于您想要存储敏感信息,加密存储会很有用。有关使用加密首选项,请参阅 this文章。

关于java - 如何在我的应用程序中传递当前登录的用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56912563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com