Java 如何使用GUI组织服务器体系结构
我正在开发一个银行客户机-服务器体系结构 我想知道组织服务器端最方便的方式是什么。 银行是否需要成为同一文件中的服务器和GUI 因为目前我有一个实例化银行的服务器GUI。这家银行有一份客户名单,每个客户都有几个账户Java 如何使用GUI组织服务器体系结构,java,jtable,client-server,abstracttablemodel,Java,Jtable,Client Server,Abstracttablemodel,我正在开发一个银行客户机-服务器体系结构 我想知道组织服务器端最方便的方式是什么。 银行是否需要成为同一文件中的服务器和GUI 因为目前我有一个实例化银行的服务器GUI。这家银行有一份客户名单,每个客户都有几个账户 我的第一个问题涉及服务器GUI中的JTable。事实上,银行存储了客户以前所做的每一项操作的ArrayList。我编写了AbstractTableModel的一个实现,它还存储了一个ArrayList。问题是服务器实例化了银行和JTable的TableModel。因此,当银行在其Ar
public List<Operation> getOperations();
这是一种缓慢但简单的获取更新的方法
b) 以更复杂的方式,您可以让AbstractTableModel向Bank对象注册,以便在向Bank添加新操作时接收事件。这看起来像:
public class BankTableModel extends AbstractTableModel {
private List<Operation> operations;
public BankTableModel(Bank bank) {
operations = bank.getOperations();
bank.addOperationEventListener(...);
}
public Object getValueAt(int row, int column) {
return operations.get(row)...
}
}
公共类BankTableModel扩展了AbstractTableModel{
私人名单业务;
公共银行表模型(银行){
operations=bank.getOperations();
bank.addOperationEventListener(…);
}
公共对象getValueAt(int行,int列){
返回操作。获取(行)。。。
}
}
问题是RMI没有提供服务器与客户端对话的机制,因此服务器和客户端都需要是RMI端点。看
2) RMI的全部要点是获得驻留在服务器上的远程对象的存根。存根允许您调用远程对象上的方法,就像该对象是本地对象一样。不要担心这个级别的安全性,尤其是在学术环境中
我会去掉Session对象,直接返回Bank对象。如果您将所有呼叫转发给银行对象,那么您真的只想直接与银行对象交互。在更复杂的系统中,您可能有合理的理由添加代理层或外观层,但在这种情况下,我会保持简单
3) GUI和服务器应该是两个不同的对象。您的GUI是您的客户机,在您的服务器端应该根本没有GUI代码。1)您希望您的AbstractTableModel在构造函数中采用Bank对象。AbstractTableModel方法然后委托给银行对象上的底层操作列表
有两种方法可以解决银行对象发生变化时的问题
a) 假设银行对象具有方法:
public List<Operation> getOperations();
这是一种缓慢但简单的获取更新的方法
b) 以更复杂的方式,您可以让AbstractTableModel向Bank对象注册,以便在向Bank添加新操作时接收事件。这看起来像:
public class BankTableModel extends AbstractTableModel {
private List<Operation> operations;
public BankTableModel(Bank bank) {
operations = bank.getOperations();
bank.addOperationEventListener(...);
}
public Object getValueAt(int row, int column) {
return operations.get(row)...
}
}
公共类BankTableModel扩展了AbstractTableModel{
私人名单业务;
公共银行表模型(银行){
operations=bank.getOperations();
bank.addOperationEventListener(…);
}
公共对象getValueAt(int行,int列){
返回操作。获取(行)。。。
}
}
问题是RMI没有提供服务器与客户端对话的机制,因此服务器和客户端都需要是RMI端点。看
2) RMI的全部要点是获得驻留在服务器上的远程对象的存根。存根允许您调用远程对象上的方法,就像该对象是本地对象一样。不要担心这个级别的安全性,尤其是在学术环境中
我会去掉Session对象,直接返回Bank对象。如果您将所有呼叫转发给银行对象,那么您真的只想直接与银行对象交互。在更复杂的系统中,您可能有合理的理由添加代理层或外观层,但在这种情况下,我会保持简单
3) GUI和服务器应该是两个不同的对象。您的GUI是您的客户机,服务器端不应该有GUI代码。您在服务器上使用的是哪种技术(EJB、servlet或其他)?为什么选择将一些对象放在单独的层上?我使用的是RMI。你说的独立层是什么意思?RMI是一种非常低级的API,是实现客户机-服务器应用程序的更复杂的方法之一。我试图弄明白你为什么选择这项技术,以及你希望从中获得什么。也许你想学习RMI,这是一个有效的动机。如果你能帮助我们理解你为什么要走这条路,或者你想完成什么,那么你会得到更好的答案。其实这是一个学术项目。我必须使用RMI实现银行客户机-服务器体系结构。我想通过编写Server/Bank/Customer/Account来尊重OOP原则,但似乎我更愿意将Server和Bank合并。服务器GUI是否可以与服务器本身位于同一文件中?或者最好将服务器GUI和服务器拆分为两个CLA