背景:使用 springboot + vue 构建的微信点餐系统
一、错误提示
最近在做一个项目,配置完信息以后,一直报错,访问URL报错信息如下:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sun Jun 23 13:26:10 CST 2019
There was an unexpected error (type=Not Found, status=404).
No message available
二、错误原因
2.1 原因一:启动类的位置不对
Springboot项目启动类的位置不对。要将启动类放在最外侧,即包含所有子包。(spring-boot会自动加载启动类所在包下及其子包下的所有组件)
2.2 原因二:控制器的URL路径书写问题
控制器的URL路径书写问题
@RequestMapping(“/xxx”)
实际访问的路径与"xxx"不符合。
2.3 原因三:配置文件中视图解析器的配置问题
在springboot的配置文件中(application.yml或application.properties)关于视图解析器的配置问题:
当pom文件下的spring-boot-starter-paren版本高时使用:spring.mvc.view.prefix/spring.mvc.view.suffix
当pom文件下的spring-boot-starter-paren版本低时使用:spring.view.prefix/spring.view.suffix
三、解决方案
注意此项目引入的Spring Boot 版本是2.1.5的,然后项目的配置文件(application.yml)信息如下:
spring datasource driver-class-name com.mysql.jdbc.Driver username root password123456 url jdbc mysql //192.168.31.204/sell?characterEncoding=utf-8&useSSL=false jpa show-sqltrueserver context-path /sell
上网查了很多,原因是SpringBoot启动类(main方法所在的类)未放在根目录下,导致@SpringBootApplication扫描不全所有包。
3.1 解决方案一
针对原因一的解决方案,也是官网上建议的:将SpringBoot启动类(main方法所在的类)即Application.java放置在和Controller同级目录,如下图所示。
官网那边说明是,程序只加载Application.java所在包及其子包下的内容。
3.2 解决方案二
针对原因二,在浏览器中输入的路径与项目中写的路径要一致,如下图所示:
而我所遇到的还不是因为这个原因,因为我的包目录结构是正确的。我的项目出现WhitePage的原因竟然是spring-boot配置文件(application.yml)中server.context-path不起作用。不起作用的原因也已经查明:server.context-path的配置方式是SpringBoot 1.x.x版本中出现的,而我引用是2.x.x版本的,需要更改为server: servlet: context-path: /sell,/sell是访问的URL中用到的,以后再详细说明。其实归根结底还是访问的路径不存在的原因。
3.3 解决方案三
针对原因三,解决方案已经写在原因说明里了,直接按照说明修改即可。
springboot 在未配置访问静态资源的情况下,会默认到 templates 文件夹下找index页面。。我现在还没有配置,后续会继续编写。
关于server.context-path不起作用的详细说明可以点击查看此链接spring-boot配置文件中server.context-path不起作用的解决方案_No8g攻城狮的博客-CSDN博客
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sun Jun 23 13:26:10 CST 2019
There was an unexpected error (type=Not Found, status=404).
No message available
本文首发于CSDN,为博主原创文章,如果需要转载,请注明出处,谢谢!
完结!