本文目录

一、错误提示

二、错误原因

2.1 原因一:启动类的位置不对

2.2 原因二:控制器的URL路径书写问题 

2.3 原因三:配置文件中视图解析器的配置问题

三、解决方案

3.1 解决方案一

3.2 解决方案二

3.3 解决方案三


背景:使用 springboot + vue 构建的微信点餐系统

一、错误提示

最近在做一个项目,配置完信息以后,一直报错,访问URL报错信息如下:

【异常】This application has no explicit mapping for /error, so you are seeing this as a fallback的解决方法_解决方案

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会自动加载启动类所在包下及其子包下的所有组件)

【异常】This application has no explicit mapping for /error, so you are seeing this as a fallback的解决方法_spring_02

2.2 原因二:控制器的URL路径书写问题 

控制器的URL路径书写问题 

@RequestMapping(“/xxx”) 

实际访问的路径与"xxx"不符合。

2.3 原因三:配置文件中视图解析器的配置问题

在springboot的配置文件中(application.ymlapplication.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
    password: 123456
    url: jdbc:mysql://192.168.31.204/sell?characterEncoding=utf-8&useSSL=false
  jpa:
    show-sql: true
server:
  context-path: /sell

上网查了很多,原因是SpringBoot启动类(main方法所在的类)未放在根目录下,导致@SpringBootApplication扫描不全所有包。

3.1 解决方案一

针对原因的解决方案,也是官网上建议的:将SpringBoot启动类(main方法所在的类)即Application.java放置在和Controller同级目录,如下图所示。

官网那边说明是,程序只加载Application.java所在包及其子包下的内容。

   

【异常】This application has no explicit mapping for /error, so you are seeing this as a fallback的解决方法_解决方案_03

3.2 解决方案二

针对原因二,在浏览器中输入的路径与项目中写的路径要一致,如下图所示:

【异常】This application has no explicit mapping for /error, so you are seeing this as a fallback的解决方法_解决方案_04

而我所遇到的还不是因为这个原因,因为我的包目录结构是正确的。我的项目出现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不起作用的解决方案

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

完结!