springboot项目找不到css,js资源,页面报错404

本文解决了一个在SpringBoot项目中遇到的问题:如何正确配置路径以便于JS和CSS资源能够被正确加载和使用,避免404错误。

废话不说,图来!

注意看我的路径
在这里插入图片描述按住Ctrl+鼠标可以连接css,js资源,并且光是页面运行也可以看到样式
在这里插入图片描述在这里插入图片描述这样子运行并不会错,但是开启springboot项目服务就会错

在这里插入图片描述然后F12可以看到报错404意思是找不到js,css资源。
原因是在springboot的静态资源这里都是同级的,路劲应该改成这样。

在这里插入图片描述现在再来运行项目,css,js资源就连接好了
在这里插入图片描述

<think>我们正在解决SpringBoot项目运行时出现404错误的问题。404错误通常表示请求的资源到,这可能是由多种原因引起的。结合上述引用和常见原因,我们将逐步分析并给出解决方案。###可能原因分析1.**控制器(Controller)未正确扫描**SpringBoot的启动类(带有`@SpringBootApplication`注解)默认只扫描其所在包及其子包下的组件。如果控制器不在启动类的子包中,则不会被扫描并注册到Spring容器中,导致请求无法映射到对应的控制器方法[^4]。2.**URL映射不正确**控制器的请求映射路径(`@RequestMapping`或`@GetMapping`等)可能配置错误,导致请求的URL与映射路径不匹配。3.**静态资源位置不正确**如果请求的是静态资源(如HTML、CSSJS文件),则可能是静态资源未放在SpringBoot默认的静态资源目录下(如`src/main/resources/static`),或者自定义的静态资源路径配置有误。4.**项目结构问题**启动类可能被放在了某个子包中,而控制器在另一个未被扫描的包中[^5]。5.**未重新编译或缓存问题**项目修改后未重新编译(如未重新生成target目录),或者存在缓存问题。6.**Web上下文路径(server.servlet.context-path)配置**如果配置了上下文路径(如`server.servlet.context-path=/myapp`),则访问URL需要加上该前缀(如`http://localhost:8080/myapp/your-path`)。7.**未启用Web模块或依赖问题**项目可能缺少必要的依赖(如`spring-boot-starter-web`),或者未正确启用Web功能。###解决方法####1.检查包结构,确保控制器在启动类的子包中-启动类(如`Application.java`)应放在项目的根包(例如`com.example.demo`)下。-控制器应放在启动类所在包或其子包中(例如`com.example.demo.controller`)。-如果控制器不在启动类的扫描范围内,可以手动指定扫描包:```java@SpringBootApplication(scanBasePackages={"com.example.demo","com.example.anotherpackage"})```####2.检查URL映射-确保控制器类和方法上的注解(如`@RequestMapping`)配置正确。-例如:```java@RestController@RequestMapping("/api")publicclassMyController{@GetMapping("/hello")publicStringhello(){return"HelloWorld";}}```此时访问URL应为:`http://localhost:8080/api/hello`(若未配置上下文路径)。####3.检查静态资源位置-静态资源应放在以下目录之一:-`src/main/resources/static`-`src/main/resources/public`-`src/main/resources/resources`-`src/main/resources/META-INF/resources`-或者通过配置文件自定义:```propertiesspring.resources.static-locations=classpath:/custom-static/```####4.检查项目结构并重新生成target-清理项目并重新构建:删除`target`目录,然后重新运行项目[^5]。-在IDE中执行Maven的`clean`命令,然后重新编译。####5.检查上下文路径配置-查看`application.properties`或`application.yml`文件:```propertiesserver.servlet.context-path=/myapp```如果配置了上下文路径,访问URL需包含该路径。####6.检查依赖-确保`pom.xml`中包含`spring-boot-starter-web`依赖:```xml<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>```####7.查看启动日志-启动时查看控制台日志,确认:-SpringMVC是否成功映射了URL(查`RequestMappingHandlerMapping`的日志)。-控制器是否被正确加载(如无报错信息)。###示例代码结构```src/main/java└──com.example.demo├──Application.java//启动类└──controller└──HelloController.java//控制器```###总结404错误通常由组件未扫描、URL映射错误、静态资源位置问题等引起。按照上述步骤逐一排查,重点检查包结构和URL映射。§§相关问题§§1.如何自定义SpringBoot的组件扫描路径?2.SpringBoot中如何配置静态资源路径?3.SpringBoot启动时如何查看所有已注册的URL映射?4.如何解决SpringBoot中的500内部服务器错误?</think>### Spring Boot项目运行404错误的原因及解决方法 404错误表示服务器无法到请求的资源,在Spring Boot项目中常见原因如下: #### 1. **控制器(Controller)未被扫描到** [^4][^5] - **原因**:`@SpringBootApplication`注解默认只扫描**启动类所在包及其子包**。若控制器在其他包中,不会被加载到IOC容器。 - **解决**: - 将控制器移动到启动类同级或子包中 - 显式指定扫描包范围: ```java @SpringBootApplication(scanBasePackages = "com.example") ``` #### 2. **URL映射配置错误** - **原因**: - 控制器缺少`@RestController`或`@Controller`注解 - 方法缺少`@RequestMapping`系列注解 - URL路径拼写错误 - **解决**: ```java @RestController // 确保添加此注解 @RequestMapping("/api") public class MyController { @GetMapping("/test") // 明确HTTP方法 public String test() { return "Hello World"; } } ``` #### 3. **静态资源位置错误** [^3] - **原因**:HTML/CSS/JS文件未放在Spring Boot默认扫描目录: - `src/main/resources/static` - `src/main/resources/public` - **解决**: - 将静态资源移至上述目录 - 自定义资源路径(在`application.properties`中): ```properties spring.resources.static-locations=classpath:/custom-folder/ ``` #### 4. **上下文路径(Context Path)配置** [^1] - **原因**:配置了`server.servlet.context-path`但未在URL中使用 - **解决**: - 检查`application.properties`: ```properties server.servlet.context-path=/myapp ``` - 访问时需包含路径:`http://localhost:8080/myapp/your-api` #### 5. **项目结构问题** - **原因**:启动类被放在深层子包中[^5] - **解决**: - 确保启动类在**顶层包**(如`com.example`) - 标准结构示例: ``` src/main/java └─ com.example ├─ Application.java // 启动类 └─ controller └─ MyController.java ``` #### 6. **未重新编译/缓存问题** [^5] - **原因**:修改代码后未重新构建 - **解决**: - 删除`target`目录后重新运行 - Maven项目执行: ```bash mvn clean package ``` #### 7. **依赖缺失** [^3] - **原因**:缺少`spring-boot-starter-web` - **解决**:检查`pom.xml`: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` ### 调试建议 1. **查看启动日志**:确认控制器是否被加载 ``` Mapped "{[/api/test]}" onto public java.lang.String ... ``` 2. **访问内置端点**:检查所有注册的URL映射 ``` http://localhost:8080/actuator/mappings ``` 3. **验证端口**:确认Tomcat监听端口(默认8080)[^1] > 提示:404错误通常由**组件未加载**或**URL不匹配**引起,优先检查包扫描范围和URL映射。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值