(完整版)基于Java即时聊天系统的设计与实现毕业论文设计 联系客服

发布时间 : 星期六 文章(完整版)基于Java即时聊天系统的设计与实现毕业论文设计更新完毕开始阅读7850c92c5bcfa1c7aa00b52acfc789eb172d9e23

码。服务器接收到客户端发送过来的号码和密码信息后,设定数据库查寻条件,并执行数据库查寻,通过比较输入的用户名和密码数据库信息来却请用户的登录是否成功。以下为登陆验证的流程图。

图5 用户登录流程图

5.1.3 注册处理模块

新建用户是即时通讯工具的一个基本功能。用户新建过程也在线程监听函数run()中。新建用户的过程是这样的:首先使用Register_Customer()方法加载数据库驱动类;然后使用dao.getUser()方法获取数据;在获取注册名时,进行判断,查看用户名是否重复,如果重复,则向客户端弹出提示信息,见图6;如果不重复,服务器接收客户端用户发送的昵称、密码、用户E-mail等信息,执行数据库添加操作完成用户的创建;最后向用户反馈注册成功信息。

图6 注册名重复提示信息

5.2 客户端的设计与实现

前一章介绍了服务器端的设计与实现,对于CS模式的系统而言,还必须对系统的客户端进行设计和实现。下面就来解决这样一个问题。

客户端通过Socket与服务器建立连接。服务器与客户都通过构造BufferedReader、PrintWriter来建立输入流和输出流,双方通过该输入流和输出流来相互传递信息。只要收到客户端的连接请求,服务器利用accept()函数返回一个新建的Socket对象,随后客户端向服务器发送消息,诸如注册、登录和查找同事等请求,服务器收到请求后,针对不同的消息处理请求。 5.2.1 用户注册模块

当用户向服务器端发出注册请求后,客户端将向服务器发送客户传递的信息,诸如客户的昵称、性别、个人资料等信息。等服务器接收完

毕后,服务器会通过hibernate框架读取数据库信息,并进行判断,最后在客户端收到服务器的反馈信息。

现对部分关键语句进行讲解。

public class Register extends JFrame implements ActionListener {

Toolkit toolkit=Toolkit.getDefaultToolkit(); JButton btnOk,btnCancel,btnClear; public Register(String ip)

{

btnOk=new JButton(\确定(O)\

btnOk.setMnemonic('O');

btnOk.setToolTipText(\保存注册信息\

btnOk.setBounds(5);

}

}

Implement继承于接口类时用的关键词【7】,在数据接口位置使用,在这里表示类ActionListen类继承类Register。

JButton btnOk,btnCancel,btnClear。这条语句中,JButton其实是一个类,名为JButton按钮类,它是JAVA中自带的一种控件,当鼠标移入、移出、被点击所定义的3个变量时,会触发JButton类,从而执行相应的操作。如在类Register中,当鼠标点击“确定”按钮时,则会触发类JButton定义的变量btnOk,并且为其赋值,进而调用setToolTipText方法,将注册信息进行保存。而setBounds类是JAVA自带类,他能够设置组件位置【8】,即确定注册窗口位置。见图7。

图7 用户注册界面

5.2.2 用户登录

当用户点击登录时,客户端发起请求与服务端建立连接,登录信息首先在客户端做验证,然后通过填写的服务器IP地址申请与服务端建立连接。而在服务器端,有一个主线程专门创建SOCKET服务,等待客户端的连接,每当客户端发起连接的申请时,与之建立连接,并创建一个线程,将建立的连接交给这个线程处理,并将连接存入一个集合中,用于后续业务的处理。然后服务器将反序列化客户端传输过来的数据,生成一个用户对象。从中获取登录填写的信息,根据用户名和密码在数据库中查找数据,如果能够找到表示登录成功,反之,登录不成功。最后将登录的结果通过文本发送给客户端发送给服务端。最后,如果通过验证,得到一个标志,进入聊天主窗体,否则弹出登录失败的对话框,让用户重新登录。登陆界面见图8

图8 用户登陆界面

现对部分关键代码进行讲解:

public void actionPerformed(ActionEvent ae) {

Object source=ae.getSource(); if (source.equals(btnLogin))

{ if(txtUserName.getText().equals(\

||

pwdPassword.getText().equals(\

{ JOptionPane op1=new JOptionPane();

op1.showMessageDialog(null,\用户名或密码不能为空\

}

else { strServerIp=txtServer.getText();

login();

} }

}

该语句表示的意思为接受用户登陆信息,如果用户名或者密码为空,则弹出提示信息,如果不为空,则调用login方法。这里equals表示接受变量的值;“||”表示“或”的意思,;showMessageDialog是JAVA的自带控件,作用是在当前界面弹出对话框;关键字new,是一种调用方法,表示能够直接调用类的构造方法。 5.2.3 在线用户显示设计

用户完成登录后,客户端与服务器端建立连接。连接建立成功后,客户向服务器请求读取在线人员名单;服务器收到该请求,开始读取数据库中的user表并得到同事的号码,向客户端发送这些信息;客户收到服务器信息后,在主窗口显示显现成员的昵称。

其实现代码如下:

for (int i=0;i

String User=(String)messobj.userOnLine.elementAt(i); lstUserList.addItem(User); }

这里采用了for循环,定义变量i,初值为0,只要i满足;i

聊天信息的发送与接收都是通过Socket类实现的。使用Socket