基于java语言的网络聊天系统开发与实现毕业论文内容摘要:
对来获取指定的虚拟服务器,然后再进行后续的操作。 该类实现了 Runnable 接口,该接口是将线程所运行的程序代码提取出来 封装 成为 一个对象。 Runnable 对象可以用来创建线程。 private User user = null。 //虚拟服务器所服务的用户 @Override public void run() { Boolean b = true。 //线程结束控制符 //接收 来自客户端封装的消息对象 Message msg = null。 while(b) { try { msg = (Message)()。 //客户端 Client发送过来的消息对象 //根据消息的类型进行不同的处理 if(() == 10) {//登录验证操作 Message returnMsg = new Login().validate(())。 //登录验证 if(() == 13) { 商丘师范学 院 2020 届 本科毕业论文(设计) 7 //验证成功,则将该虚拟服务器添加到 主 服务器管理 的 虚拟服务器 列表 ().put(().getAccount(), this)。 } send(returnMsg)。 }else if(() == 20) {//转发聊天消息 ().get(().getAccount()).send(msg)。 send(msg)。 }else if(() == 30) {//退出操作 ().remove(())。 ().interrupt()。 //结束当前线程 }else if(() == 40) {//邀请好友进行游戏 ().get(().getAccount()).send(msg)。 }else if(() == 41) {//好友同意游戏邀请,双方开始游戏 Message m = new Message()。 (42)。 (())。 ().get(().getAccount()).send(m)。 (())。 send(m)。 }else if(() == 43) {//拒绝好友的游戏邀请 ().get(().getAccount()).send(msg)。 }else if(() == 44) {//由 获胜方通知失败方,胜负情况 ().get(().getAccount()).send(msg)。 } } catch (Exception e){ //异常处理 b = false。 //如果出现异常则修改线程终止符,使线程结束。 } } } 从源码中可以看出,虚拟服务器主要的工作,就是解析消息的类型,并根据消息的类型进行相应的处理。 例如在消息的类型为 10时,虚拟服务器就调用登录验证 Logon来对用户的信息进行验证,根据登录验证的验证结果,再返回相应的消息 给客户端的 Client。 登录验证 Logon private static UserDao userDao = new UserDao()。 //调用底层的 用户数据 访问功能 public Message validate(User user) { Message msg = new Message()。 //返回验证的结果信息 User u = (())。 //账户存在 if(u == null) {//账户不存在 (11)。 (账户不存在。 )。 }else{//该账户存在 u = ((), ())。 if(u == null){ //密码不对 (12)。 (密码不对。 )。 }else{//账户、密码正确 if(().get(()) == null) {//可以登陆 商丘师范学 院 2020 届 本科毕业论文(设计) 8 (13)。 (u)。 }else{//已登录 (14)。 (不能重复登录。 )。 } } } return msg。 }} 登录验证,主要分为三步 : ,即该账号是否存在。 只有账号存在才会进行后续的验证。 ,再验证密码是否与账号匹配,如果匹配成功,则返回该用户的信息。 ,对于已登录的用户则不再给予登录操作。 Hibernate 配置文件 访问数据的操作 要借助 Hibernate 框架来完成。 使用 了 Hibernate,我们就可以不用再写很复杂繁琐的 JDBC 语句去 建立与 数据库的连接,而将这些操作全都交给 Hibernate 来完成。 Hibernate 的配置文件如下 : sessionfactory !—在控制台打印出 执行 数据访问 的 SQL语句 property name=show_sqltrue/property !—连接 数据库所使用的驱动程序 property name=/property ! 连接数据库的地址 property name=jdbc: property name=root/property property name=846255/property ! 数据库的方言,该方言用于对数据库 的 操作进行解释 property name=/property !—开启数据库定义语言,用于自动创建表结构 property name=create/property ! 映射的实体类 mapping class = / mapping class = / /sessionfactory/hibernateconfiguration Hibernate 会话工厂 在完成了配置之后,为了可以使用它来进行数据的操作 ,我们 需要先创建会话工厂 , 因为数据的操作是基于会话的。 会话工厂的代码如下: public class Hibernate { private static SessionFactory sf = null。 //会话工厂 private static Session session = null。 static { Configuration cf = new Configuration()。 ()。 //在 默认路径下 , 读取配置文件。 ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(()).build()。 商丘师范学 院 2020 届 本科毕业论文(设计) 9 sf = (sr)。 session = ()。 } private Hibernate() {} public static SessionFactory getSessionFactory() {return sf。 } public static Session getSession() {return session。 } } 这里的会话工厂 SessionFactory 使用的是 Java 设计模式中 的单例模式,唯一的 SessionFactory 对象能够保证数据操作的可控性,让我们能够 利用 事务有效的 保证 被操作数据的一致性。 在配置文件中罗列出了所使用的实体类, 通过 在实体类中 使用 相应的注解标明, Hibernate 就可以将一个实体类映射为一张表,而实体类的属性则将映射为表 中 的字段。 实体类就相当于一张表,为了操纵 它 ,我为实体类 分别 写了一个操作 类。 利用会话 Session 来实现数据的增删改查。 数据操作类 UserDao public class UserDao { private Session session = null。 public UserDao() {session = ()。 }//获取会话 public User findByAccount(Integer account) {//根据账号来查询用户 Criteria c = ()。 ((account, account))。 User user = (User)()。 return user。 } //根据账号和密码来查询用户 public User findByAccountAndPassword(Integer account, String password) { Criteria c = ()。 ((account, account))。 ((password, password))。 User user = (User)()。 return user。 } //查询全部用户 public ListUser queryAll() { Criteria c = ()。 @SuppressWarnings(unchecked) ListUser users = ()。 return users。 } } 商丘师范学 院 2020 届 本科毕业论文(设计) 10 数据操作类 CrowdDao public class CrowdDao {//群组数据访问层 private Session session = null。 public CrowdDao() {session = ()。 } public void save(Crowd crowd) {//保存群组 Transaction transaction = ()。 (crowd)。 ()。 } public void update(Crowd crowd) {//更新群组 Transaction transaction = ()。 (crowd)。 ()。 } public void delete(Crowd crowd) {//删除群组 Transaction transaction = ()。 (crowd)。 ()。 } } 以上两个数据访问类都使用了基于 Criteria 的查询 方式。基于java语言的网络聊天系统开发与实现毕业论文
相关推荐
组件,诸如开放式数据库连接 (ODBC)后能使不同客户机进行相互 连接 ,它可处理基于 Inter 的应用程序,帮助用户把 SQL Server 数据库信息集成到 Web 页面。 开发技术 ( 1) JavaScript 编程语言 在现在的基于 WEB 应用系统开发中, Java 已经开始成为了人们的首选, Java语言具有安全、跨平台、面向对象、简单、适用于网络等显著特点, Java
ement sm=null。 //数据库语句对象 public void ConnectDB(){//定义一个连接的方法try {( driverName)。 //注册驱动程序conn = (url,userName , userPwd)。 sm=()。 (数据库连接成功!)。 } catch(Exception e) {()。 (数据库连接失败!)。 }}public String
.............................................................................12 4 系统分析与设计 .............................................................................................................
务流程分析 在进 行业务流程分析时,需要按照原有信息流动过程,逐个地调查分析所有环节的处理业务、处理内容、处理顺序和对处理时间的要求,弄清各个环节需要的信息、信息来源、流经去向、处理方法、计算方法、提供信息的时间和信息形态(报告、报单、屏幕显示)等 [4]。 业务流程分析可以帮助开发者了解该业务处理过程,发现和处理系统调查工作中的错误和疏漏。 业务流程分析是通过业务流程图来进行
方式更加简便,更加精确,词汇量更加丰富而且随身携带更加方便的工具,那就是电子词典,应该说这是一个新旧交替的过程,电子词典取代传统词典只是时间的问题。 所以说电子词典的发展前景是 明朗的,电子词典生产厂家也如同雨后春笋般崛起了。 功能需求分析 本系统在单词查阅方面主要完成了英译汉、汉译英、单词发音功能;在系统 性能方面主要完 成了单词库的插入、修改、删除功能以及帮助系统。 模块功能介绍
,能够实现增加学生, 增加教师,发布选修课,发布必修课的功能。 学生信息管理 学生信息修改 学生登录后可以修改自己的个人信息,进入学校中,系统初始化学生的学号,学号一般不会再变,因此学生是无法修改学号的,修改个人信息页面如图 42 所示: 如图 42 修改个人信息界面 学生 信息修改 功能步骤和关键代码如下: int flag = (update stu set xm=39。 +xm+39。 ,