通过FTP服务器的特点及人们对软件的操作习惯,要求系统具有以下功能:
FTP 客户端系统包括连接 FTP 服务器、FTP 操作管理、本地操作管理、队列管理及帮助5部分。它的功能结构如图2.1所示。
图2.1 功能结构图
FTP客户端系统主窗体的主要功能是对系统的整体操作,在主窗体中添加了各模块面板,用户可以通过主窗体直观地观察整个系统的情况,运行效果如图2.2所示。
图2.2 FTP客户端主界面
登录FTP服务器的面板包括连接、断开操作。当用户输入正确的IP地址、用户名及密码时,用户将会获得进一步操作的权限,而且本系统支持匿名操作。主要功能是登录系统,实现系统的进一步操作,效果如图2.3所示。
图2.3 登录FTP服务器的面板
传输状态模块中的队列管理面板中记录着已上传的文件,用户可以在本面板中观察文件的传输情况,效果如图2.4所示。
图2.4 队列管理的文件上传记录
队列管理面板中还记录着上传、下载任务,用户可以直观地观察到对文件操作的进展,效果如图2.5所示。
图2.5 队列管理面板
本地模块中的资源管理窗口主要是向用户展示本地的文件信息,用户可以对本地文件进行基本的操作,效果如图2.6所示。FTP服务器资源管理窗口的主要功能是向用户展示服务器端的文件信息,用户可以通过界面对服务器端的文件进行必要的操作,效果如图2.7所示。
图2.6 本地资源管理窗口
图2.7 FTP服务器资源管理窗口
在FTP客户端系统中,首先要登录服务器,验证登录用户是否合法。如果登录成功,便可以上传本地文件或文件夹,同时也可以管理 FTP 服务器端文件,包括下载、删除文件及创建新目录等功能,FTP客户端系统的业务流程图如图2.8所示。
图2.8 业务流程图
系统的主窗体是直接展示给用户的,主窗体的布局将直接决定用户对程序的第一印象。FTP文件管理系统的主窗体主要由菜单栏、连接模块、窗口的主体部分和状态模块组成。窗口的主体部分又由本地文件模块与 FTP 服务器文件模块组成,当用户执行上传或下载命令时在状态模块中显示文件执行的进度,如图2.9所示。
图2.9 主窗体模块
为了让Java创建的图形界面也能够跨平台,即在相同的操作系统中保持相同的外观,从JDK1.2版本开始引入了Swing组件,这些Swing组件位于javax.swing包中,多数Swing组件的父类为javax.swing.JComponent。
JComponent为几乎所有的Swing组件提供下层构件,因此,它是一个很大的类,包括100多个public方法。JComponent为它的扩展提供了很多功能,如边框、自动滚动、可访问性、工具提示、双缓存、键击处理、调试图形、客户属性等。
主窗体模块主要用到Swing组件、事件监听及布局管理器的相关知识点。首先构建一个面板,其次向面板中加入一些细节,比如按钮、菜单、文本组件等,当用户对相关的按钮进行触发,就会执行相应的按钮事件。例如:向文本组件对象添加一个键盘监听器,按回车键将会触发keyPressed()方法,代码如下:
Java语言中定义了布局管理器的概念,通过布局管理器使各组件定位。常用到的有流布局管理器( Flow Layout Manager)边界布局管理器( Border Layout Manager)。
创建类FTP_Client_Frame,该类继承JFrame类。定义一个FTP_Client_Frame类的构造方法,在方法内部调用 initComponents()方法。在 initComponents()方法内部使用 add()方法在窗体中添加菜单栏、登录面板、本地与服务器面板、传输队列面板,进行初始化主窗体的工作。关键代码如下:
窗体创建完成后调用窗体的事件处理方法,其方法内部调用了 LocalPanel 类的getLocalDiskComboBox()方法,该方法实现了在本地面板中显示本地磁盘中的文件。关键代码如下:
主窗体模块中由主机地址、用户名、密码、匿名单选框、连接按钮等组成了一个登录面板。每个组件有相对应的事件处理方法。关键代码如下:
定义一个linkButtonActionPerformed方法用于处理单击连接按钮产生的事件。该方法调用ftpClient类,ftpClient继承了FtpClient类。FtpClient中定义了sendServer()方法向服务器发送命令连接服务器。关键代码如下: