首页 > 其他分享 >chap4

chap4

时间:2024-05-31 19:45:23浏览次数:17  
标签:数据库 jar chap4 mysql DruidDataSource ds 客户端

本文档描述了Server端接收到Client的消息并转发给所有客户端或私发给某个客户端

同时将聊天消息保存到mysql

服务端为当前客户端创建一个线程,此线程接收当前客户端的消息并转发给所有客户端或私发给某个客户端同时将聊天消息保存到mysql

本文档主要总结了将聊天消息保存到mysql !!!

一、mysql:

mysql数据库中创建chatinfo表。

create table chatinfo(
    id int auto_increment,
    from_user varchar(40) null,
    to_user varchar(40) null,
    content varchar(400),
    constraint chatinfo_pk  primary key (id)

);

二、DBUtil工具类:

 

package chat4_all;
import java.sql.Connection;
import java.sql.SQLException;
import com.alibaba.druid.pool.DruidDataSource;
/**用druid连接池来连接数据库的工具类*/
public class DBUtil {
    //1.DruidDataSource(可以理解为连接池)
    private static DruidDataSource ds = new DruidDataSource();

    static {
        //设置数据库的地址        
ds.setUrl("jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true"); ds.setUsername("root");//给DruidDataSource ds设置数据库用户名 ds.setPassword("root");//给DruidDataSource ds设置数据库密码 ds.setInitialSize(10);//给DruidDataSource ds初始容量 ds.setMaxActive(20);//给DruidDataSource ds最大连接数 } //2.用给DruidDataSource ds获取数据库连接的方法 public static Connection getConnection() throws SQLException { return ds.getConnection(); } }

 

三、导入jar

3.1.创建lib软件包: 

 

3.2.将druid-1.1.20.jar和mysql-connector-java-8.0.23.jar粘贴到chat4.lib软件包中:

 

 

3.3.然后将jar包设置为项目的类库:

在druid-1.1.20.jar上点右键然后按下图方式点击add as library

在mysql-connector-java-8.0.23.jar上点右键然后按下图方式点击add as library 

 

 四、Server端:

4.1.saveMessage:

在sendMessageToSomeOne()方法上边添加 如下方法 (用于将三个数据保存到数据库)

(消息发送者、消息接收者、发送的消息)

/**
 * 将聊天消息保存到数据库中
 * @param fromUser  发送方昵称
 * @param toUser    接收方昵称
 * @param content   聊天消息
 */
public void saveMessage(String fromUser,String toUser,String content){
    try ( Connection connection = DBUtil.getConnection(); ){
        String sql = "INSERT INTO chatinfo(content,from_user,to_user) " +
                     "VALUES (?,?,?)";
        PreparedStatement ps = connection.prepareStatement(sql);
        ps.setString(1,content);
        ps.setString(2,fromUser);
        ps.setString(3,toUser);
        ps.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

4.2.调用:

 

在Server里的ClientHandler类的run方法中循环读取客户端消息的循环中添加调用saveMessage()方法的一行代码。

用于将群聊消息保存到mysql。

 

 在Server里的ClientHandler类的sendMessageToOne()方法中添加调用saveMessage()方法的一行代码。如下图:

用于将私聊消息保存到mysql。

 

 

运行效果:

运行效果和上一版本chat3一样,不过多出了将聊天数据保存到mysql的功能。

 

 

 


                                                                                                                                                                                                                                        By   zhaoyq   2024-05-31

 

标签:数据库,jar,chap4,mysql,DruidDataSource,ds,客户端
From: https://www.cnblogs.com/zhaoyongqi/p/18225187

相关文章

  • 聪明办法学python chap4:条件
    聪明办法学pythonchap4:条件if语句:通过缩进判断是不是在if里面ifelse:if成立else就不管了if不成立执行elsex=int(input())ifelifelse:平行依次判断:if():elif():elif():else:语法糖:(推导式)def(n):returnnif(n>=0)else-n等价于:def(n):​ ifn>=0:......
  • chap4 条件
    chap4条件1.if语句if():···<following_statement>如果输入正确则会执行程序,否则不会执行if语句里的内容ifelse语句```x=input("x=")x=float(x)print("hello")ifx<10:print("wahoo")else:print("ohno")print("goodbye&q......
  • 聪明办法学python chap4 条件 5循环
    Python(四)条件if-elif-elsex=5ifx<0:print("x小于0")elifx==0:print("x等于0")else:print("x大于0")match-casedefcheck_value(value):matchvalue:case1:print("Valueis1&......
  • chap4 循环结构、chap6 回顾数据类型和表达式 第七小组 学习总结
    chap4循环结构第七小组学习总结循环语句有以下几种:1.for循环语句 (1)使用方法:     for(初始条件;循环条件;结束操作){循环语句;}(2)优点:循环有序,层层递进  ......
  • chap4 循环结构、chap6 回顾数据类型和表达式 第一小组 学习总结
    chap4循环结构第一小组学习总结一、内容梳理c语言循环结构是指根据某一条件判断重复执行的语句,核心内容为循环控制表达式,如果表达式为真,则继续执行;否则,循环结束。c语......
  • chap4 循环结构、chap6 回顾数据类型和表达式 学习总结
     在我认为循环结构是c语言中较为重要的部分,他在使用中也能发挥很大的作用,无论是for还是while或是dowhile,都有他们各自的特点,通常他们在一样的的题目中都可以用,但是在一......
  • Chap4 循环结构 第八小组 学习心得
    循环结构的相应知识    循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环,是编程中必不可少......
  • Chap4 循环结构 第三小组 学习心得
             什么是循环结构? 循环结构是编程中必不可少的一个组成部分。通常可以和分支结构和顺序结构组成各种不同的程序。它有三种不同的表达方式:(1)w......
  • chap4的学习心得
    在这一周的学习过程中,我们更加深刻地了解了循环语句的使用,比如99乘法表的输出,输出一个菱形等等,难度更高的题目,在我看来他们都有一个共同的特点,循环套循环。如同if语句中的......
  • Chap4 循环结构--打印打印菱形图案(多重循环结构总结)---第14组
    经过上一周周的c语言学习循环语言学习,我们小组初步的认识c语言中循环语言。但在有些程序中需要在循环语言中执行循环语言,这种循环称之为嵌套循环(或者多重循环)。本次的总......