我正在创建一个程序,它使用几个不同的交互菜单,允许用户访问系统的不同部分。我正在使用Netbeans来帮助编码。
目前我被困在一项任务上。
当用户通过“登录”表单登录系统时,系统会验证详细信息,并根据凭据将用户重定向到“user_details”或“admin_menu”。那很好用。从那里,用户可以访问一个表单,允许他们更新已保存在数据库中的详细信息。
我发现限制简单用户更新其详细信息的唯一方法是让他们再次登录,然后从中检索他们的详细信息以便更新。这个过程很混乱,但它确实有效。
考虑到这一点我如何检索文本字段“用户名”中的任何内容,该用户名位于jform从另一个jform(User_details)登录,只有登录成功后才会打开User_details jform(一旦发生登录,丢弃并打开user_details)。
顺便说一句,我做了很多研究,但似乎无法找到问题的答案。String sql = "select * from user where Username =? and password=?";
try {
pst = con.prepareStatement(sql);
pst.setString(1, username.getText());
pst.setString(2, password.getText());
rs = pst.executeQuery();
int count = 0;
while (rs.next()) {
count = count + 1;
}
if (count == 1) {
JOptionPane.showMessageDialog(null, "Access Granted");
if ("manager@manage.com".equals(t.getText())) {
rs.close();
pst.close();
close();
Admin_menu am = new Admin_menu();
am.setVisible(true);
} else {
rs.close();
pst.close();
close();
User_details M = new User_details();
M.setVisible(true);
}
} else {
JOptionPane.showMessageDialog(null, "Incorrect Username or Password");
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
} finally {
try {
rs.close();
pst.close();
} catch (Exception ex) {
}
}
如何让User_details Jform获取文本域用户名中的内容?
答案 0 :(得分:1)
您可能希望创建一个类,该类表示登录用户在您的应用程序中执行的所有操作的状态。传统上,您将其称为会话。登录用户是该会话的属性,因此您将其保存在该字段中。您将会话传递到您创建的每个帧中,以便他们都可以访问它。
用户退出时会话无效。
然后,从您的框架,组件,无论如何,您都可以从会话中获取当前用户。
但是,请尝试将前端与后端代码分开。查看MVC pattern。
答案 1 :(得分:0)
尝试将变量声明为public并使用其他想要使用它们的jframe初始化它们,例如
public your class{
initComponents();
String a;
}
希望这有助于:)
答案 2 :(得分:0)
您可以在存储信息的类变量中创建一个类“BasicView”,因此该类的每个实例都可以使用ist。然后你只需要扩展这个基本类,或者只使用BasicView.value或BasicView.getValue()。 您还可以使用synchronized方法更改此var。
public class BasicView {
private static Object value;
public synchronized void setValue(Object value) {
this.value = value;
}
public Oject getValue() {
return value;
}
.
.
.
}
我用它来初始化一个ServicesLocator来获取所有bean中的服务。 :)
编辑:另外看看MVC模式并在控制器(基本控制器)或类似的东西中使用它。
答案 3 :(得分:0)
1。使用Composition
,并确保您的GUI类始终在从不同JFrame引用时返回相同的对象。
2。这可以使用Singleton Principle
实现。
答案 4 :(得分:0)
创建一个名为session的类,如下所示:
public class Session {
public static String userName = "";
}
当登录发生时,将Session.userName的值设置为给定的userName,并在用户注销时将Session.userName设置为“”。只需键入Session.userName即可访问Session.userName。其他会话变量也应该在Session类中定义。