From 1c84d4faa4b10cdd774570bdebeecf2816f4bdf3 Mon Sep 17 00:00:00 2001 From: Cool <747682928@qq.com> Date: Fri, 24 Nov 2023 21:04:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E5=9D=A8=E5=B1=8E=EF=BC=8CjsonObject?= =?UTF-8?q?=E6=9C=89bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 ++++- .../com/example/chat/ChatApplication.java | 4 ++- .../chat/controller/LoginController.java | 6 ++++ src/main/java/com/example/chat/dao/Login.java | 1 + .../com/example/chat/dao/chat/ChatMapper.java | 1 - .../example/chat/dao/chat/ChatMessage.java | 4 +-- .../com/example/chat/dao/chat/MapperTest.java | 34 ++++++++++++++++++ .../example/chat/jwt/InterceptorConfig.java | 1 + .../example/chat/service/LoginService.java | 8 +++-- .../service/websocket/WebSocketServer.java | 35 ++++++++++--------- 10 files changed, 79 insertions(+), 23 deletions(-) create mode 100644 src/main/java/com/example/chat/dao/chat/MapperTest.java diff --git a/pom.xml b/pom.xml index b0a9f31..a4cd795 100644 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,10 @@ org.springframework.boot spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-test + com.auth0 java-jwt @@ -66,9 +70,11 @@ com.alibaba fastjson - 2.0.32 + 1.2.83 + + diff --git a/src/main/java/com/example/chat/ChatApplication.java b/src/main/java/com/example/chat/ChatApplication.java index 5ae68e1..8883925 100644 --- a/src/main/java/com/example/chat/ChatApplication.java +++ b/src/main/java/com/example/chat/ChatApplication.java @@ -1,10 +1,12 @@ package com.example.chat; +import org.apache.ibatis.annotations.Mapper; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.socket.config.annotation.EnableWebSocket; -@EnableWebSocket +//@EnableWebSocket +@Mapper @SpringBootApplication public class ChatApplication { diff --git a/src/main/java/com/example/chat/controller/LoginController.java b/src/main/java/com/example/chat/controller/LoginController.java index d5bc90d..06fae90 100644 --- a/src/main/java/com/example/chat/controller/LoginController.java +++ b/src/main/java/com/example/chat/controller/LoginController.java @@ -1,11 +1,15 @@ package com.example.chat.controller; +import com.example.chat.ChatApplication; +import com.example.chat.dao.chat.ChatMapper; import com.example.chat.entity.Email; import com.example.chat.entity.Result; import com.example.chat.entity.User; +import com.example.chat.entity.chat.Message; import com.example.chat.service.CodeCheck; import com.example.chat.service.LoginService; import com.example.chat.service.mail.MailUtil; +import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -22,6 +26,8 @@ public class LoginController { @Resource MailUtil mailUtil; + + @PostMapping("/login") public Result Login(@RequestBody User user) throws IOException { Result result = new Result(); diff --git a/src/main/java/com/example/chat/dao/Login.java b/src/main/java/com/example/chat/dao/Login.java index 21093bb..5d3aa22 100644 --- a/src/main/java/com/example/chat/dao/Login.java +++ b/src/main/java/com/example/chat/dao/Login.java @@ -3,6 +3,7 @@ package com.example.chat.dao; import com.example.chat.entity.User; import com.example.chat.dao.mybatis.MybatisSingleton; import org.apache.ibatis.session.SqlSession; +import org.junit.Test; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/example/chat/dao/chat/ChatMapper.java b/src/main/java/com/example/chat/dao/chat/ChatMapper.java index b43d414..dc83df6 100644 --- a/src/main/java/com/example/chat/dao/chat/ChatMapper.java +++ b/src/main/java/com/example/chat/dao/chat/ChatMapper.java @@ -7,7 +7,6 @@ import org.springframework.stereotype.Repository; import java.io.IOException; import java.util.List; -@Repository public interface ChatMapper { public abstract void addMessage(Message message) throws IOException; diff --git a/src/main/java/com/example/chat/dao/chat/ChatMessage.java b/src/main/java/com/example/chat/dao/chat/ChatMessage.java index 24f8cc3..35e0137 100644 --- a/src/main/java/com/example/chat/dao/chat/ChatMessage.java +++ b/src/main/java/com/example/chat/dao/chat/ChatMessage.java @@ -7,7 +7,6 @@ import org.apache.ibatis.session.SqlSession; import org.springframework.stereotype.Repository; import java.io.IOException; -import java.util.ArrayList; import java.util.List; @Repository @@ -28,10 +27,11 @@ public class ChatMessage implements ChatMapper { sqlSession.close(); } + @Override public List getMessage() throws IOException { List messageList; SqlSession sqlSession = MybatisSingleton.getSqlSessionFactory().openSession(); - messageList = sqlSession.selectOne("dao.chat.Message.getMessage"); + messageList = sqlSession.selectList("dao.chat.Message.getMessage"); sqlSession.close(); return messageList; } diff --git a/src/main/java/com/example/chat/dao/chat/MapperTest.java b/src/main/java/com/example/chat/dao/chat/MapperTest.java new file mode 100644 index 0000000..c0528ef --- /dev/null +++ b/src/main/java/com/example/chat/dao/chat/MapperTest.java @@ -0,0 +1,34 @@ +package com.example.chat.dao.chat; + +import com.example.chat.ChatApplication; +import com.example.chat.dao.UserMapper; +import com.example.chat.entity.User; +import com.example.chat.entity.chat.Message; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; + +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import java.io.IOException; +@RunWith(SpringRunner.class) +@SpringBootTest(classes = ChatApplication.class) +public class MapperTest { + + @Resource(name = "chatMessage") + ChatMapper mapper; + @Resource(name = "login") + UserMapper userMapper; + + + @Test + public void Test02() throws IOException { + System.out.println(userMapper.getUser(new User("1", "1", "1", "1"))); + } + + @Test + public void Test01() throws IOException { + mapper.addMessage(new Message("1", "1", "1", "1")); + } +} diff --git a/src/main/java/com/example/chat/jwt/InterceptorConfig.java b/src/main/java/com/example/chat/jwt/InterceptorConfig.java index 28715e5..48d97ab 100644 --- a/src/main/java/com/example/chat/jwt/InterceptorConfig.java +++ b/src/main/java/com/example/chat/jwt/InterceptorConfig.java @@ -24,6 +24,7 @@ public class InterceptorConfig implements WebMvcConfigurer { excludePath.add("/sendCode"); excludePath.add("/register");//注册 excludePath.add("/register"); + excludePath.add("/chat/get"); registry.addInterceptor(tokenInterceptor)//注册拦截器 .addPathPatterns("/**")//拦截所有请求 .excludePathPatterns(excludePath);//添加拦截白名单 diff --git a/src/main/java/com/example/chat/service/LoginService.java b/src/main/java/com/example/chat/service/LoginService.java index a8f475f..98900b7 100644 --- a/src/main/java/com/example/chat/service/LoginService.java +++ b/src/main/java/com/example/chat/service/LoginService.java @@ -4,6 +4,7 @@ import com.example.chat.dao.UserMapper; import com.example.chat.dao.redis.RedisUtil; import com.example.chat.entity.User; import com.example.chat.jwt.JWTUtil; +import org.junit.Test; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -17,14 +18,17 @@ public class LoginService { @Resource(name = "tokenRedis") RedisUtil redisUtil; + @Test + public void Test01() throws IOException { + System.out.println(userTable.getUser(new User())); + } + public String LoginCheck(User requestUser) throws IOException { User user; user = userTable.getUser(requestUser); System.out.println(user); System.out.println(requestUser); if (user != null) { - - if (user.getPassword().equals(requestUser.getPassword())) { String token = JWTUtil.sign(user.getAccount()); redisUtil.addRedis(user.getAccount(), token); diff --git a/src/main/java/com/example/chat/service/websocket/WebSocketServer.java b/src/main/java/com/example/chat/service/websocket/WebSocketServer.java index dfdd9ff..7dc7ae6 100644 --- a/src/main/java/com/example/chat/service/websocket/WebSocketServer.java +++ b/src/main/java/com/example/chat/service/websocket/WebSocketServer.java @@ -1,54 +1,57 @@ package com.example.chat.service.websocket; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.example.chat.dao.chat.ChatMapper; +import com.example.chat.dao.chat.ChatMessage; import com.example.chat.entity.chat.Message; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import javax.swing.*; import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.io.IOException; -import java.util.ArrayList; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +@CrossOrigin @Slf4j @ServerEndpoint(value = "/chat/get") -@Service +@Component public class WebSocketServer { - private final List sessionList = new ArrayList<>(); + private static final List sessionList = new CopyOnWriteArrayList<>(); - @Resource - ChatMapper chatMapper; + + public ChatMapper chatMapper=new ChatMessage(); @OnOpen public void onOpen(Session session) throws IOException { sessionList.add(session); log.info("有新用户加入聊天,当前在线人数为{}", sessionList.size()); + if (chatMapper == null) { + log.error("chatMapper为null"); + } List messageList = chatMapper.getMessage(); sendAllSession(messageList); } @OnMessage public void onMessage(String message) throws IOException { - Message message1= JSON.parseObject(message,Message.class); + Message message1 = JSON.parseObject(message, Message.class); chatMapper.addMessage(message1); - List messageList=chatMapper.getMessage(); + List messageList = chatMapper.getMessage(); sendAllSession(messageList); } + @OnError - public void onError(Throwable error){ + public void onError(Throwable error) { log.error("发生错误"); error.printStackTrace(); } @OnClose - public void onClose(Session session){ + public void onClose(Session session) { log.info("有一个用户断开连接了"); sessionList.remove(session); } @@ -60,8 +63,8 @@ public class WebSocketServer { try { for (Session session : sessionList) { - log.info("给客户端发送消息{}",session); - session.getBasicRemote().sendObject(message); + log.info("给客户端发送消息{}", session); + session.getBasicRemote().sendText(JSON.toJSONString(message)); } } catch (Exception e) { log.error("消息发送失败", e);