Spring boot Spring引导应用程序rest调用在tomcat中为下一个请求提供404错误

Spring boot Spring引导应用程序rest调用在tomcat中为下一个请求提供404错误,spring-boot,Spring Boot,新的弹簧靴。将war部署到tomcat服务器。部署后的url为-http://localhost:8080/project-0.0.1-SNAPSHOT/。它显示欢迎jsp页面,工作正常。启动按钮应调用控制器启动项目。但url调用将转到http://localhost:8080/startProject 而不是http://localhost:8080/project-0.0.1-快照/startProject。 在快照版本之后手动输入/startProject后,项目工作正常。我缺少什么来配置

新的弹簧靴。将war部署到tomcat服务器。部署后的url为-http://localhost:8080/project-0.0.1-SNAPSHOT/。它显示欢迎jsp页面,工作正常。启动按钮应调用控制器启动项目。但url调用将转到http://localhost:8080/startProject 而不是http://localhost:8080/project-0.0.1-快照/startProject。 在快照版本之后手动输入/startProject后,项目工作正常。我缺少什么来配置?请帮忙。多谢各位

我的代码如下所示 欢迎使用Jsp

<a type="button" class="start-btn" href="/startProject">Start New Project</a>
公共类项目控制器{

@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,因此可以通过url访问该应用程序: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>


我这里有一个示例项目可以证明对您很有帮助:。

嗨,我想这是因为当您放置
/
时,浏览器会转到根域。在本例中
localhost:8080/
您可以尝试
而不使用
/
只需添加URL的路径。谢谢您的建议。我知道我需要提到上下文路径。但是版本控制如何配置上下文路径而不在JSP中对其进行硬编码。我已尝试在应用程序属性服务器中设置上下文路径。上下文路径=项目。但是如何在每次构建时动态配置版本?我认为这很容易处理。例如:1。在控制器中创建一个变量以保存上下文路径。私有字符串上下文路径;2.注入值:public UserController(@value(${server.servlet.context path}”)字符串contextPath){this.contextPath=contextPath;}3。将值加载到模型中:@GetMapping(“/home”)公共字符串寄存器(模型模型){model.addAttribute(“contextPath”,this.contextPath);返回“home”}4。参考它:
@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";
}
<a type="button" class="start-btn" href="/project-0.0.1-SNAPSHOT/startProject">Start New Project</a>