关于后端java项目使用SpringBoot框架的报错总结

本文介绍了在使用Spring Boot时遇到的Spring DispatcherServlet未初始化问题,以及服务器启动后context-path配置无效的情况。解决方案包括在`application.properties`中设置`spring.mvc.servlet.load-on-startup`为正整数以确保Servlet初始化,或者添加Apache HttpComponents的依赖。此外,还提到了`server.servlet.context-path`配置无效的问题,可通过设置`server.servlet.context-path=/xx`来指定资源路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Initializing Spring DispatcherServlet

在postman中输入正确url后,控制台报出信息:Initializing Spring DispatcherServlet,起初因为该行信息前没有标注errorwarning,但查阅相关文章后发现这是一个待解决的问题

报错原因:DispatcherServlet未初始化
在这里插入图片描述

上图为 大银_strawberry 博主的图片,因作者在解决问题后不能复现问题,故借用

解决方法(取其一即可):

  1. 在application.properties文件添加:(亲测可行)
    spring.mvc.servlet.load-on-startup=100
    在springboot中 load-on-startup 默认值是-1,项目启动时,默认不会初始化DispatcherServlet,也就是不会调用Servlet接口的init()方法。可以通过在application.properties配置文件中设置以上配置项,以指定启动时初始化,将spring.mvc.servlet.load-on-startup设置成0或正整数启动时就会初始化

  2. pom.xml文件添加如下依赖:(未测试)

<dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>4.3.3</version>
</dependency>

原文链接:Initializing Spring DispatcherServlet



Tomcat started on port(s): 8089 (http) with context path ‘’

原因:spring-boot2.0以上配置文件中server.context-path不起作用

解决方法:在application.properties中设置server.servlet.context-path=/xx,其中/xx为资源路径
例:server.servlet.context-path=/demo,项目中的一个接口是/find,则访问的url是:http://localhost:8089/web/find

参考文章:

  1. spring-boot配置文件中server.context-path=/XXXX不起作用
  2. Springboot 添加server.servlet.context-path相关使用总结
在 Spring Boot 项目中,遇到类似 `No static resource dormitory` 的错误通常表示请求的静态资源无法被正确找到或加载。这可能是由多个原因导致的,以下是一些常见的解决方法和注意事项。 ### 静态资源路径配置 Spring Boot 默认会从特定目录加载静态资源。确保你的静态文件位于以下任意一个目录中: - `/src/main/resources/static` - `/src/main/resources/public` 如果需要自定义静态资源路径,可以在 `application.properties` 或 `application.yml` 中进行配置。例如,在 `application.properties` 中添加: ```properties spring.web.resources.static-locations=classpath:/static/,classpath:/public/ ``` 或者在 `application.yml` 中: ```yaml spring: web: resources: static-locations: classpath:/static/,classpath:/public/ ``` [^1] ### URL 路径匹配问题 检查访问的 URL 是否与控制器中的映射路径一致。假设你有一个控制器处理 `/dormitory` 请求: ```java @RestController @RequestMapping("/api") public class DormitoryController { @GetMapping("/dormitory") public String getDormitory() { return "Dormitory Info"; } } ``` 此时应通过 `/api/dormitory` 访问该接口。如果你希望直接通过 `/dormitory` 访问,可以调整 `@RequestMapping` 注解为: ```java @RestController @RequestMapping("/") public class DormitoryController { @GetMapping("/dormitory") public String getDormitory() { return "Dormitory Info"; } } ``` [^1] ### 前端路由与后端冲突 如果你使用了前端框架(如 Vue.js 或 React),并启用了 HTML5 History 模式,请确保后端能够将所有未匹配的请求重定向到 `index.html`。可以通过自定义配置类实现: ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addRedirectViewController("/", "/index.html"); } } ``` [^1] ### 缓存问题 浏览器可能会缓存旧的静态资源版本,导致新修改的内容无法生效。尝试清除浏览器缓存或使用无痕模式重新加载页面。 ### 打包部署问题 当你打包成 JAR 文件时,确保构建工具(如 Maven 或 Gradle)已正确包含所有静态资源。Maven 的默认配置通常不会有问题,但如果使用了自定义插件配置,请检查 `<packaging>` 设置是否为 `jar` 并且资源过滤配置正确。 对于 Gradle 用户,检查 `build.gradle` 文件中的任务是否包含以下内容: ```groovy jar { manifest { attributes 'Main-Class': 'com.example.DemoApplication' } from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } } ``` ### 日志与调试 启用 Spring Boot 的调试日志可以帮助定位问题。在 `application.properties` 中添加: ```properties logging.level.org.springframework.web=WARN ``` 或者更详细的日志输出: ```properties logging.level.org.springframework.web=DEBUG ``` 观察控制台输出以确定是否有任何关于静态资源加载失败的信息。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值