Login
import java.sql.SQLException;
import java.util.Scanner;
public class Login {
public static void main(String[] args) {
System.out.println("1:注册 2:登录 3:聊天");
Scanner input = new Scanner(System.in);
int i =input.nextInt();
switch(i) {
case 1:
new LoginService().add();
break;
case 2:
try {
String register =new LoginService().register();
while(true) {
System.out.println("a:删除 b:显示信息 c:更改信息 ");
Scanner input1 = new Scanner(System.in);
String j =input1.next();
String a = "a",b="b",c="c",d="d";
if(j.equals(a)) {
try {
new LoginService().delete();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}else if(j.equals(b)){
new LoginService().show1(register);
}else if(j.equals(c)){
new LoginService().update();
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
case 3:
new LoginService().talk();
}
}
}
LoginService
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class LoginService {
private Connection connection ;
private String user_account;
private String user_code;
private String user_name;
public void add() {
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/chat", "root", "123456");
Scanner input = new Scanner(System.in);
System.out.println("请注册账号:");
user_account =input.next();
System.out.println("请输入密码:");
user_code =input.next();
System.out.println("请输入姓名:");
user_name =input.next();
String sql = "insert into user (user_account,user_code,user_name) values(?,?,?)";
PreparedStatement a = connection.prepareStatement(sql);
a.setString(1,user_account);
a.setString(2,user_code);
a.setString(3,user_name);
int rs = a.executeUpdate();
if(rs>0){
System.out.println("注册成功!重新登录!!!");
if(a!=null) {
a.close();
}if(connection!=null) {
connection.close();
}
} else
System.out.println("注册失败!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
}
Socket socket1 = null;
PrintWriter printWriter=null;
String name;
public String register() throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/chat", "root", "123456");
Scanner scanner=new Scanner(System.in);
System.out.print("账号:");
String s=scanner.next();
System.out.print("密码:");
String d=scanner.next();
String sql = "SELECT * FROM user WHERE user_account=? AND user_code=?";
PreparedStatement b = connection.prepareStatement(sql);
b.setString(1,s);
b.setString(2,d);
ResultSet rs = b.executeQuery();
if(rs.next()) {
String name = rs.getString(1);
System.out.println(name+"登录成功!");
return s;
}else {
System.out.println("登录失败!请重新登录!!!");
register();
}
return s;
}
public void delete() throws ClassNotFoundException, SQLException {
Scanner scanner = new Scanner(System.in);
System.out.println("您确定要注销您的账户吗?");
System.out.println("确定请按1,取消请按2");
int ok = scanner.nextInt();
if (ok == 1) {
System.out.println("请输入您要注销的账号");
String user_account = scanner.next();
System.out.println("请输入您的密码");
String user_code = scanner.next();
String user_code1 = pwd(user_account);
if(user_code.equals(user_code1)) {
System.out.println("继续请按1,取消请按2");
int ok2 = scanner.nextInt();
if (ok2 == 1) {
delete1(user_account);
}else if(ok2==2) {
System.out.println("取消删除!!");
}
}else {
System.out.println("输入的密码错误");
}
}else if(ok==2) {
System.out.println("取消删除!!");
}
}
public void delete1(String user_account) {
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/chat", "root", "123456");
String sql = "delete from user where user_account='"+user_account+"'";
PreparedStatement b = connection.prepareStatement(sql);
int rs = b.executeUpdate();
if(rs>0) {
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
if(b!=null) {
b.close();
}
if(connection!=null) {
connection.close();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
}
private String pwd(String user_account) throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/chat", "root", "123456");
String sql = "select user_code from user where user_account = '"+user_account+"' ";
PreparedStatement ps = connection.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
String pwd = "";
if (rs.next()) {
pwd = rs.getString(1);
}
return pwd;
}
public void show1(String user_account) {
System.out.println("姓名"+"\t"+"密码"+"\t"+"账号"+"\t");
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/chat", "root", "123456");
String sql = "select * from user where user_account = '"+user_account+"'";
Statement m = connection.createStatement();
ResultSet rs = m.executeQuery(sql);
while(rs.next()) {
String c1 = rs.getString(1);
String c2 = rs.getString(2);
String c3 = rs.getString(3);
System.out.println(c1+"\t"+c2+"\t"+c3+"\t");
}
if(rs!=null) {
rs.close();
}
if(connection!=null) {
connection.close();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
}
public void update() {
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/chat", "root", "123456");
Scanner i = new Scanner(System.in);
System.out.println("请输入要修该的账号:");
user_account =i.next();
System.out.println("请输入修改的密码:");
user_code =i.next();
System.out.println("请输入修改的姓名:");
user_name =i.next();
String sql="update user set user_name=?,user_code=? where user_account='"+user_account+"'";
Statement createStatement = connection.createStatement();
PreparedStatement b = connection.prepareStatement(sql);
b.setString(1, user_name);
b.setString(2, user_code);
int rr = b.executeUpdate();
if(rr>0){
System.out.println("更新成功!");
b.close();
createStatement.close();
}else {
System.out.println("更新失败!!");
}
}catch (SQLException e) {
e.printStackTrace();
}catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
String i= null;
public void talk() {
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/chat", "root", "123456");
Scanner scanner=new Scanner(System.in);
System.out.print("聊天账号:");
String s =scanner.next();
System.out.print("聊天密码:");
String d=scanner.next();
String sql = "SELECT * FROM user WHERE user_account=? AND user_code=?";
PreparedStatement b = connection.prepareStatement(sql);
b.setString(1,s);
b.setString(2,d);
ResultSet rs = b.executeQuery();
if(rs.next()) {
String name = rs.getString(1);
System.out.println(name+"开始聊天");
System.out.println("单聊提示 —— @姓名:");
try {
Socket socket = new Socket("172.16.9.19",8080);
ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
OutputStream outputStream = socket.getOutputStream();
printWriter = new PrintWriter(outputStream);
newCachedThreadPool.execute(new Test02Read(name,bufferedReader));
newCachedThreadPool.execute(new Test02Writer(name,printWriter));
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}else {
System.out.println("聊天失败");
talk();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
}
}
Service
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.List;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Service {
public static void main(String[] args) {
ServerSocket serverSocket=null;
Socket accept = null;
try {
serverSocket = new ServerSocket(8080);
ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
int i=1;
while(true) {
System.out.println("等待客户端:");
accept = serverSocket.accept();
System.out.println("第"+i+"位客户来访");
i++;
newCachedThreadPool.execute(new TestService(accept));
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
accept.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
## TestService
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class TestService implements Runnable {
public static List<BufferedReader> bufferedReaderList = new ArrayList<>();
public static List<PrintWriter> printWriterList = new ArrayList<>();
private Socket accept=null;
public TestService(Socket accept) {
this.accept = accept;
}
@Override
public void run() {
BufferedReader bufferedReader=null;
PrintWriter printWriter=null;
try {
Scanner scanner = new Scanner(System.in);
bufferedReader = new BufferedReader(new InputStreamReader(accept.getInputStream()));
printWriter = new PrintWriter(accept.getOutputStream());
bufferedReaderList.add(bufferedReader);
printWriterList.add(printWriter);
while(true) {
String i= null;
String j=null;
int k = 0;
if ((i = bufferedReader.readLine()) != null) {
for(PrintWriter a:printWriterList) {
if (i.startsWith("**")) {
int indexOf = i.lastIndexOf("*");
String substring = i.substring(indexOf + 1);
int indexOf2 = substring.indexOf("=");
String substring2 = substring.substring(1, indexOf2);
if (k == 0) {
System.out.println(substring2 + "刚刚说话啦!");
k++;
}
int indexOf3 = substring.indexOf("}");
String substring3 = substring.substring(indexOf2 + 1, indexOf3);
if (a == printWriter) {
continue;
} else {
a.println(substring3);
a.flush();
}
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
bufferedReader.close();
printWriter.close();
accept.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Test02Read
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test02Read implements Runnable{
private BufferedReader bufferedReader;
private String name;
public Test02Read(String name,BufferedReader bufferedReader) {
this.bufferedReader = bufferedReader;
this.name=name;
}
@Override
public void run() {
Socket socket = null;
PrintWriter printWriter=null;
String i = null;
try {
while((i=bufferedReader.readLine())!=null) {
Date date = new Date();
SimpleDateFormat simpleDateFormate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (i.startsWith("@")) {
int indexOf4 = i.indexOf(":");
String substring4 = i.substring(1, indexOf4);
String substring5 = i.substring(indexOf4 + 1);
if (name.equals(substring4)) {
System.out.println(substring5+" "+simpleDateFormate.format(date));
}
} else {
System.out.println(i+" "+simpleDateFormate.format(date));
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Test02Writer
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Test02Writer implements Runnable{
private PrintWriter printWriter;
private String name;
private Map<String, String> mapNameMessage = new HashMap<>();
public Test02Writer(String name ,PrintWriter printWriter) {
this.printWriter = printWriter;
this.name = name;
}
@Override
public void run() {
Scanner scanner = new Scanner(System.in);
while(true) {
String next = scanner.next();
mapNameMessage.put(name, next);
printWriter.print("**");
printWriter.println(mapNameMessage);
printWriter.flush();
}
}
}
连接数据库
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/19c1e5b7fee928e0be1aa533294395a6.jpeg)
user_name是姓名
user_code是密码
user_account是账号
先启动Service,再启动Login