spring boot整合jsp报错 Whitelabel Error Page 500或者404 问题处理

在刚刚用idea创建的spring boot 项目整合jsp时,
一直不能正常访问,报错信息如下图
There was an unexpected error (type=Internal Server Error, status=500).
在这里插入图片描述

根据错误提示说是返回的视图名与路径名重复,来看controller类代码

@Controller
public class HelloController {
    @RequestMapping("hello")
    String hello(Map<String,String> map ){
        map.put("msg", "hello world this is jsp");
       // model.addAttribute("msg", "hello world");  传入参数 Model model
        return   "hello";
    }
}

将访问路径中的hello 改为 index,重启项目,再次访问,得到Whitelabel Error Page 404错误
在这里插入图片描述

网上找了错误原因归类如下
1、Application启动类的位置不对.要将Application类放在最外侧,即包含所有子包
原因:spring-boot会自动加载启动类所在包下及其子包下的所有组件.
2、在springboot的配置文件:application.properties中关于视图解析器的配置问题:
spring.view.prefix/spring.view.suffix这个东西我感觉不是主要的原因,但是我又没有遇到过解决该问题使用该方法的场景
3、spring boot 不推荐使用jsp,需要导入支持jsp相关 jar包

    <dependency>  
           <groupId>org.springframework.boot</groupId>  
           <artifactId>spring-boot-starter-tomcat</artifactId>  
         <scope>provided</scope>  
     </dependency>  

     <dependency>  
         <groupId>org.apache.tomcat.embed</groupId>  
         <artifactId>tomcat-embed-jasper</artifactId>  
         <scope>provided</scope>
     </dependency> 

来看本项目的结构
在这里插入图片描述

看到结构也没有问题,
再来看application.properties配置文件

spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp

在这里插入图片描述
application.properties配置也没有问题。
再来查看pom关于支持jsp以及servlet依赖的引入也没有问题
在这里插入图片描述
这就奇怪了,我们再处理请求方法中加上打印日志,看是否能正常获取请求。
在这里插入图片描述

重启,再次访问 看到控制台打印了刚刚添加的日志,表明程序能正常获取请求,但是无法解析jsp
在这里插入图片描述

所以考虑是否是系统没有引入jar包,在工程左侧中external 包看到是引入了
在这里插入图片描述
但是在项目右侧maven project中没有看到相关jar包
在这里插入图片描述

所以觉得是不是,原来自己以为只要在pom文件中添加依赖保存以后,就会自动引入相关jar,看来不是这个样子
,需要刷新maven ,刷新后看到这次有了引入的jar包
在这里插入图片描述

重新编译、再次重启之后,访问,这次应该可以了吧,
然而现实是残酷的。得到依然恐怖的:Whitelabel Error Page
在这里插入图片描述
在网上看到,还有一个原因
4、idea的pom里面识别不了provided的,所以必须注释掉
在这里插入图片描述
然后再次重启,终于得到想要的结果。
在这里插入图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Java Knife4j-Spring-Boot-Starter 是一个集成了 Swagger(一个用于API文档生成和管理的工具)的 Spring Boot Starter,用于简化在 Spring Boot 项目中集成 Swagger 的配置和使用。 Whitelabel Error PageSpring Boot 提供的一个默认错误处理页面,用于在发生异常或错误时向用户展示错误信息。当没有自定义错误处理页面时,Spring Boot 会自动跳转至 Whitelabel Error Page。 在使用 Java Knife4j-Spring-Boot-Starter 集成 Swagger 时,可能会遇到 Whitelabel Error Page 的情况。这通常是因为配置的路径与已有的 Spring Boot 配置发生了冲突,导致请求无法正确路由到对应的 Controller。 解决这个问题的方法有两种: 1. 修改 Swagger 配置的路径:可以通过在 application.properties(或 application.yml)文件中修改 swagger.apiBasePackage 的值来更改 Swagger 的路径配置,确保与已有的配置不发生冲突。 2. 自定义错误处理页面:如果不希望使用默认的 Whitelabel Error Page,可以自定义一个错误处理页面来替代。可以通过编写一个继承自 ErrorController 的 Controller 类,并在其中自定义错误处理逻辑和返回页面。然后,在 application.properties(或 application.yml)文件中配置 spring.mvc.throw-exception-if-no-handler-found 和 spring.mvc.static-path-pattern 属性,将其设置为 false 和 /,以禁用 Spring Boot 的默认处理方式。 通过以上两种方法之一,可以解决 Java Knife4j-Spring-Boot-Starter 与 Whitelabel Error Page 的冲突问题,并能够正常使用 Swagger 生成和管理 API 文档。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜的中年程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值