目录
1.报错信息为: Route paths should start with a "/":"login" should be "/login"
4.报错信息:Caused by: java.sql.SQLNonTransientConnectException: Public Key Retrieval is not allowed
暑假在家期间,笔者想着趁着假期有空闲时间,打算在家自己简单地写一个springboot+vue的前后断项目,旨在将在学校里学过的springboot和vue的相关知识用于实际开发过程。在B站上跟着黑马的相关视频进行相关开发,在开发过程中也遇到了不少说大不大,但是耗费很长时间才解决的问题。想着为了避免自己今后再犯,且为了帮助和我遇到同样问题的人,于是对这段时间所出现的错误以及解决方法进行记录。废话不多说,下面将简略且详细描述我的问题以及解决办法:
1.报错信息为: Route paths should start with a "/":"login" should be "/login"
出现此问题的原因是:本人在写前端登录页面时,在设置路由的时候,router目录下的index.js文件中定义路由关系时,在login的path处少添加了一个“ / ”,导致出错。具体代码如下图所示:
修改前
修改后
2.错误情况:主页面在设置完子路由后,页面跳转未成功实现。
此问题不算是一个大问题,是本人在跟着UP主学完子路由后,自己在项目中添加了子路由用于页面的跳转。当笔者写完子路由后,发现页面跳转毫无反应,浏览器也无任何的错误提示信息。找了很久才发现,自己在主页面的菜单处忘记添加路由router了,导致出现了此问题。如下图所示:
图中所标记出的地方,就是笔者在写的时候忘记添加router的位置。
该问题不算是什么技术问题,完全由于本人开发过程中粗心所致,但也耽误了很长时间来解决,记录该问题,避免日后再犯或者其他人开发过程中出现类似本人的问题而耽误太多的时间。
3.报错信息 :GET http://localhost:5173/api/productspageNum=1&pageSize=3401 (Unauthorized)
出现此问题的原因是笔者当时跟着up主敲的代码,up主视频里登录拦截器中设置的是从请求头中的“token”里获取令牌。但是本人在写请求头时用的是“Authorization”,所以,一直登录失败,登录状态也一直是401。具体问题出处如下图:
此问题相较于上面的粗心,还是算的上是个问题。在视频弹幕里看到许多人应该也是类似的问题,所以本人觉得这个问题也算有点意义。
4.报错信息:Caused by: java.sql.SQLNonTransientConnectException: Public Key Retrieval is not allowed
该问题的出现就有点奇怪了,头天晚上笔者在写代码的时候打开的还好好的。第二天下午再次打算去写代码的时候发现打不开了。然后就有了如下图所示的报错信息:
询问了通义灵码,阐述说是公钥检索的问题。然后在CSDN上搜索相关问题,也算是找到了解决的办法。解决文章由作者zhizhiqiuya发布,具体链接我放到下面以供参考。而具体解决问题的代码如下(以下内容直接拷贝的原文章,如有侵权,请联系):
1.修改MySQL数据库连接字符串URL,在末尾追加"?allowPublicKeyRetrieval=true"参数,例如:
String url = "jdbc:mysql://localhost:3306/mydatabase?allowPublicKeyRetrieval=true&useSSL=false";
2.如果您使用的是Java 8及以上版本,可以将SSL模式设置为"false",即在JDBC驱动程序中通过添加一个额外属性来关闭SSL,例如:
String url = "jdbc:mysql://localhost:3306/mydatabase?sslMode=DISABLED";
笔者本人是直接在自己的代码后面添加了“String url = "jdbc:mysql://localhost:3306/mydatabase?sslMode=DISABLED";”,具体代码如下:
spring.datasource.url=jdbc:mysql://localhost:3306/dian_manager_system?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false&requireSSL=false&serverTimezone=UTC
原文章的链接如下:
解决: Cause: java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
5.报错信息为:org.springframework.web.HttpRequestlethodNotSuportedException : Reqvest method "DELETE’is not supported
此问题出错原因是因为自己后端的内容与up主的后端内容不太一样,所以导致出现该问题。不惭愧的说,其实自己也想到了这方面的原因,就是不知道该如何修改。也是在CSDN上进行搜索,找到的解决办法。具体文章参考的是博主AuroraJim的文章,具体链接也是依旧放在下面。该问题的修改主要在前端,修改如下:
修改前:
/* 删除商品 */
export const deleteProduct=(id)=>{
return request.delete('/products?id='+id)
}
修改后:
export const deleteProduct=(id)=>{
return request.delete('/products/'+id) //此处与前面进行对比
}
附带上后端相关代码以供参考,后端代码为:
@DeleteMapping("/{id}")
public Result deleteProduct(@PathVariable("id") Integer id){
log.info("删除商品");
productService.deleteProduct(id);
return Result.success();
}
根据原文章作者的解释,根据视频里的写法,也就是上面修改前的写法,是在URL中显式添加?id=参数,而笔者与原作者的后端均是通过路径变量{id}来获取id,所以需要进行修改。
原文章链接如下:request method ‘DELETE‘ is not supported问题
总结:这些问题就是这十几天以来笔者在写项目中所遇到的所有耽误一定时间的问题。本文主要在于记录笔者出现的问题,大多数是低级错误,需要细心以及耐心,记录这些是为了避免自己在今后的开发过程中再次受阻。同时,如果有人和笔者遇到了一样的问题,笔者也希望能够有一定的帮助。本文中所有涉及到的参考文章均在文中提及原作者及作品链接,如有侵权,请及时联系。同时,文章中如果有任何问题,也欢迎大家在评论区提出,如有修改建议,笔者也会积极采纳,不断进步。如果觉得本文对你有所帮助,也希望大家可以点赞。