注解版websocket,404错误解决办法。

在学习WebSocket时,遇到404错误,经过一系列百度和尝试,最终找到解决方案。问题关键在于不需要额外配置文件,前端能直接找到后台。使用jdk1.7和tomcat8,将websocket-api.jar导入Tomcat的lib目录,而非项目lib。其他解决方法欢迎交流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天下午闲着没事儿,想试着学学新东西,就想到了websocket, 就在网上搜小demo,倒是不少,有的代码也写的很清楚,但是遇到了问题,好久都没有解决,还好我没有放弃,一直在百度,不断转换提问题的角度,最后算是改好了。

代码来自网友 且风_吟 网址为:http://blog.youkuaiyun.com/huitoukest/article/details/51437982

先看一下错误长什么样子。
这里写图片描述

就是这个404错误,接着说心路历程(狼人杀玩儿多了),赶时间的朋友可以直接到最下面
当tomcat跑起来的时候,我还蛮高兴,没有提示任何错误,而且页面也弹出来框了,只是弹出来的不是open,是close,所以很奇怪,就是出不来也应该都出不来,凭什么不出open出close(有知道的朋友可以给我评论一下 大家都这么无聊是吧)。然后我就想啊,到底啥问题啊?

问题1:是不是配置文件不对,这不在配置文件里弄了bean 或者扫描啥的,前台能找到后台的地方吗?
解答:不需要别的配置文件,网址里面的代码就足够了,因为这个好像叫什么端点服务器(只要加了那个注解,前台就直接能找到),不要想代码的问题,当然里面还是有一点小问题的(见图),和后台的应该保持一致。
这里写图片描述

好了 懒得想了 反正其实也都是网上的知识 只是自己总结了一下 没啥厉害的 我就说啥样可以 啥样不可以以及为啥不可以大家再去网上找吧 应该是找得到的。

我最后的配置是 jdk1.7 tomcat8 ; 然后把Tomact-lib的websocket-api.jar导进项目(注意不是放到项目的lib下 项目lib下面应该是没有这个jar才对 见下图)
这里写图片描述

可能不是只有这一种解决办法,如果广大网友朋友们,有了其他的解决办法,欢迎一起学习讨论。最后,表达有限,能力有限,请多指正!!!

### 关于 `javax.servlet.annotation.WebSocket` 的 IDE 警告解决方案 如果在项目中遇到有关 `javax.servlet.annotation.WebSocket` 注解的警告或报黄问题,通常是因为缺少必要的依赖项或者配置不正确。以下是可能的原因以及对应的解决办法: #### 1. **确认 Servlet API 是否已正确引入** Tomcat 提供了嵌入式的 servlet 实现 (`tomcat-embed-core`),该依赖已经包含了 `javax.servlet` 下的相关内容[^1]。因此,无需单独引入 `javax.servlet-api` 依赖。 然而,某些情况下,IDE 可能未能识别到这些类的存在,从而导致警告。可以通过以下方式验证并解决问题: - 确认项目的构建工具(Maven 或 Gradle)是否正确加载了所需的依赖。 - 如果使用 Maven,请检查 `pom.xml` 文件中的依赖声明是否存在冲突或错误。 ```xml <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>9.0.78</version> <!-- 本号需根据实际需求调整 --> </dependency> ``` #### 2. **WebSocket 配置与拦截器设置** 对于基于 Java Spring 的 WebSocket 应用程序开发,确保 WebSocket 的 URL 请求已被正确定义和注册[^2]。此外,还需注意以下几点: - 检查 `WebSocketConfig.java` 中是否有遗漏的关键逻辑。 - 确保自定义的拦截器 `WebSocketInterceptor()` 已被正确应用。 示例代码如下: ```java @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(myWebSocketHandler(), "/ws").setAllowedOrigins("*"); registry.addHandler(myOtherHandler(), "/echo-ws").addInterceptors(new MyCustomInterceptor()); } @Bean public WebSocketHandler myWebSocketHandler() { return new MyWebSocketHandler(); } } ``` #### 3. **数据库连接异常排查** 虽然当前问题是关于 WebSocket 和 Servlet 注解的警告,但如果应用程序涉及数据库操作,则需要注意潜在的 SQL 连接问题。例如,`Access denied for user 'root'@'localhost' (using password: YES)` 错误可能是由于用户名/密码配置不当引起的[^3]。尽管这并非直接关联,但在全面调试过程中仍应考虑此类因素。 #### 4. **JAXB 相关依赖缺失** 部分场景下,当项目运行环境升级至 JDK 11 或更高本时,可能会因默认移除 JAXB 支持而导致类似 `ClassNotFoundException` 的异常发生[^4]。此时需要显式添加 jaxb-api 依赖库来修复此问题。 ```xml <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> ``` 通过以上措施可以有效消除由 `javax.servlet.annotation.WebSocket` 导致的 IDE 警告现象,并提升整体代码质量。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值