异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.解决办法

本文讲述了在SpringBoot项目中,由于启动类放置位置不当及配置问题导致的页面无法访问。解决方法包括调整启动类位置使其包含所有子包,以及通过添加@SpringBootApplication(scanBasePackages)指定扫描包。核心在于理解Spring配置扫描机制和包结构对应用运行的影响。
摘要由CSDN通过智能技术生成

写了一个SpringBoot项目,运行项目时,输入正确的访问路径,发现项目访问不到,经过查看,其他配置正常。

1、错误信息

在这里插入图片描述

2、错误原因

经过一番解决,发现造成该种情况的原因是因为项目目录结构错误导致,启动类Application类被我错误的放置在一个单独包里。 错误目录结构图如下: (项目报错忽略,这是Eclipse的原因)

在这里插入图片描述

启动类代码:

@SpringBootApplication
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
	
}

3、解决方法一(移动启动类位置):

启动类Application类的正确放置位置应该是放置在最外层包,要能包含所有的子包(而我的是独立放置在一个平行层面的包里,导致页面找不到)。正确目录结构如下:
在这里插入图片描述
即启动类Application类与其他子包属于同一根目录下。
【原因】Spring底层在解析配置类,会去解析@ComponentScan,读取basePackages,如果没有读取到,会将当前配置类所在的包当做扫描包

(意思即是:
①由于原来的目录结构,配置类(启动类)没有指定扫描的包,因此系统会默认将启动类所在的包(com.lzy.springboot.application)当做扫描包,因此系统扫描包时并没有搜索控制器所处在的包(com.lzy.springboot.controllers),因此项目在发布运行时找不到请求路径,所以若启动类没有指定扫描的包,需要把启动类放在与需要扫描的包在同一级根目录下;
②启动类指定扫描包请查看 “解决方法二”)

4、解决方法二(添加指定扫描包:@SpringBootApplication(scanBasePackages=“指定扫描包”)):

修改启动类注解,添加指定的controller扫描位置,即可解决问题,代码如下:

@SpringBootApplication(scanBasePackages="com.lzy.springboot.controllers")
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
	
}

上面两种方法,刷新页面即可正常访问网页
在这里插入图片描述

5、总结出现网页找不到的原因

  1. 启动类位置不正确
  2. 页面访问路径与控制器@RequestMapping定义的路径不一致
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值