spring-boot - Spring Boot 应用程序休息调用在 tomcat 中为下一个请求提供 404 错误
问题描述
弹簧靴的新手。将战争部署到 tomcat 服务器。部署后的url是-http://localhost:8080/project-0.0.1-SNAPSHOT/。它显示欢迎 jsp 页面并且工作正常。启动按钮应该调用控制器启动项目。但是 url 调用转到 http://localhost:8080/startProject 而不是 http://localhost:8080/project-0.0.1-SNAPSHOT/startProject。在快照版本之后手动输入 /startProject 后,项目工作正常。我缺少什么配置?请帮忙。谢谢你。
我的代码是下面的 Welcome.Jsp
<a type="button" class="start-btn" href="/startProject">Start New Project</a>
Pom.xml 4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.4.RELEASE com.project mancala 0.0.1-SNAPSHOT war mancala Spring Boot 演示项目
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
项目控制器.java
@Controller
公共类项目控制器 {
@Autowired
private ProjectService projectService;
@GetMapping(value = "/")
public String login() {
return "project";
}
@GetMapping(value = "/startProject")
public String startNewGame(ModelMap model) {
ProjectModel projectModel = projectService.startNewProject();
model.addAttribute("projectModel", projectModel);
return "project";
}
}
解决方案
由于您已将 application.properties 文件中的server.servlet.context-path属性设置为project-0.0.1-SNAPSHOT,因此可以通过以下网址访问该应用程序:http://localhost:8080/project-0.0.1-SNAPSHOT /。
因此,您所有的 jsp 页面 url 都必须以上下文路径开头:/project-0.0.1-SNAPSHOT/ **。
这意味着,Welcome.jsp 文件中的 startProject 页面 url 应该如下所示:
<a type="button" class="start-btn" href="/project-0.0.1-SNAPSHOT/startProject">Start New Project</a>
我有一个示例项目可以证明对您有帮助:https ://github.com/nkumashi/springboot-webmvc-demo 。