关于springboot+Servlet报错404的问题
假如遇到使用springboot+Servlet的方式进行开发或者学习(一般是作业),其中有个经常遇到的问题是访问不到,会报404的错误,资源未加载;
网上有很多解决方法,例如加ServletComponentScan()包扫描路径,但是我帮一个学弟改依然无法解决;
经过重重对比和纠错,终于找到了问题 原来Springboot版本为3.7.0改为2.6.15之后就解决了,问ai原因如下:
在 Spring Boot 2.6.15 中能正常访问,而在 Spring Boot 3.5.7 中无法访问,可能是由于 Spring Boot 3.x 版本的一些特性变化导致的。以下是一些可能的原因及解决方法:
包路径变更问题:Spring Boot 3.x 全面迁移到 Jakarta EE 9+,Servlet 相关的包路径从javax.servlet变为jakarta.servlet。而你提供的代码中导入的仍然是javax.servlet相关的包,这在 Spring Boot 3.5.7 中可能会导致类无法正确加载。解决方法是将所有javax.servlet相关的导入语句改为jakarta.servlet相关的导入语句。例如,将import javax.servlet.ServletException;改为import jakarta.servlet.ServletException;等。
Servlet 注册问题:在 Spring Boot 3.x 中,Servlet 的注册方式可能需要更严格的配置。虽然你使用了@WebServlet注解,但可能存在 Spring 无法识别该 Servlet 的情况。可以尝试在主配置类上添加@ServletComponentScan注解,以确保 Spring 能够扫描到你的 Servlet 类。例如:
java
运行
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan(basePackages = "com.mes.servlet")
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}
依赖配置问题:Spring Boot 3.x 对依赖的要求可能与 2.x 版本不同。确保你的项目中包含了正确的 Servlet 依赖。在 Spring Boot 3.x 中,应该使用jakarta.servlet-api依赖。例如:
xml
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>5.0.0</version>
    <scope>provided</scope>
</dependency>
这边大家如果遇到相关问题可以尝试一下
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号