SpringBootWhitelabel Error Page This application has no explicit mapping for /error, so you are seei

3 篇文章 0 订阅
3 篇文章 0 订阅

问题提示

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

这是spring提示你找不到对应符合的映射。
首先你先确保前端url地址是不是写对,再看看后端controller层的映射RequestMapping是不是写对,同时要注意有没有把controller注册到spring容器中,
最后再看看你启动类是不是写错地方了,因为我看了另一篇CSDN的博客说:“启动类放的位置不对,启动类所在的package必需要包含Controller所在的package”,你可以尝试看看,一般用idea自动创建springboot,你移动启动类这个问题是不存在的。

再再最后……如果前端请求还是不能正常访问,而你自认为你没有写错url等,也许你和我犯了一样的错误。

创建一个简单的Demo

1.目录结构

在这里插入图片描述

2.Controller

简单的两个映射文件
在这里插入图片描述

3.index.html页面

在这里插入图片描述

4.application.properties文件

指定项目启动的工程名,注意springboot1.0和springboot2.0在这里写法是不一样的。

#springboot 2.0
server.servlet.context-path=/myDemo

#springboot 1.0
#server.context-path=/myDemo

5.启动项目

项目启动没有报错
在这里插入图片描述

再输入框内输入内容,点击发送按钮,前端未获得响应字符串,后台也没有打印输出。
点击test链接,显示错误页面,提示没有找到映射。
但是又没有感觉写错了……
在这里插入图片描述

6.分析

首先a链接地址是:/myDemo/test

<a href="/myDemo/test">test</a>

也许你会觉得是少了“http://localhost:8080”等类似的字符串,你大可加上去试试……而且我们从报错页面的地址可以看出,跳转的时候系统自动为我们在/myDemo/test前面添加了localhost等 。

再来看看我写的controller

@RestController
@RequestMapping("/myDemo")
public class TestController {

    @RequestMapping(value = "/hello",method = RequestMethod.GET)
    public String hello(@RequestParam("name") String name){
        System.out.println("run");
        return "hello:"+name;
    }

    @RequestMapping(value = "/test",method = RequestMethod.GET)
    public String test(){
        System.out.println("111");
        return"test";
    }
}

最外面的@RequestMapping映射的地址是/myDemo,里面函数部分的@RequestMapping分别映射的地址是/hello和/test。
情不自禁结合来看就是/myDemo/hello和/myDemo/test,感觉和前端写的地址也是吻合的……

7.问题

我遗忘了配置的工程名:server.servlet.context-path=/myDemo

有人肯定会说,a链接和ajax的url里面不是写了/myDemo了?
但我说数量上不对,我们先来看修改后的结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在映射正常了,我在每个url地址里面多了加了一个/myDemo。
比如/myDemo/myDemo/xxxx,第一个/myDemo对应的是我配置的工程名,第二个/myDemo对应的是controller里面外围的RequestMapping,最后的/xxx才是对应函数体上的RequestMapping。

我们再来看看之前/myDemo/test,现在看来/myDemo用来对应工程名后,spring去找一个可以映射/test的Controller去了,你可以另外写一个controller测试下。
在这里插入图片描述

解决办法: 1.不配置工程名
2.每个链接都加上工程名,最后工程名不用来作为Controller层的映射
3.有些编译器好像可以配置启动路径(工程名)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值