当前位置: 首页 > 知识库问答 >
问题:

spring boot应用程序rest调用为下一个请求在tomcat中给出404错误

汪兴旺
2023-03-14

刚到spring boot。已将war部署到tomcat服务器。部署后的url是-http://localhost:8080/project-0.0.1-snapshot/。它显示了welcome jsp页面并且运行良好。start按钮应该调用控制器启动项目。但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-快照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>

ProjectController.java

@Controller

公共类ProjectController{

@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";
}

}

共有1个答案

洪昊然
2023-03-14

由于您已经将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>

我这里有一个示例项目可以证明对您有帮助:https://github.com/nkumashi/springboot-webmvc-demo。

 类似资料:
  • 我制作了Spring web应用程序示例项目。我做了所有的基本配置,基于java的配置和servlet 3.0web.xml.但在所有这些配置后,当我打网址它给我404错误。会有什么问题。有人能帮帮我吗? 网状物xml: 配置java类: 控制器: 当我试图访问这个网址 它给我404错误。虽然当我直接访问jsp页面时,它显示该页面。

  • 我在Spring MVC中开发了一个应用程序,当我直接从eclipse通过run as->run On server运行它时,它工作得很好。 但是现在我想要将war部署到Tomcat文件夹并从那里运行它。我已经对此做了更改,war正在正确地部署到所需的tomcat文件夹中,但当我启动tomcat服务器并在浏览器中访问应用程序url时,它会给我404错误。服务器正在启动,没有任何异常。 下面是项目结

  • 我正在获取一条消息,通过gmail API获取完整消息: 我正在传递一条有效的消息。Id号 谷歌。GoogleApiException:“谷歌。API。请求。请求错误 找不到[404] 谷歌。应用程序。请求。请求错误未找到[404]错误[消息[未找到]位置[-]原因[未找到]域[全局]] 这里还有一个问题 有人遇到过这个吗?

  • 我使用和以及开发了一个Java web应用程序。我的应用程序在本地pc上运行,没有任何错误。 但是在我托管了我的应用程序之后,我无法访问servlet。它给了我错误。我不习惯在我的应用程序中映射servlet。我使用了。 托管服务器使用和。 可能是什么问题?我该怎么解决这个问题? 新更新 我购买主机的地方给了我上传文件的。tomcat中没有上传文件的地方,也没有上传文件到director的地方。所

  • [见底部更新]我试图通过Tomcat启动Spring Web应用程序,但是当我在浏览器中输入urlhttp://localhost:8080/demo-mvc/时,我收到了404错误和一条消息“请求的资源[/demo-mvc/]不可用”。起初,我试图通过NetBeans部署应用程序,它说部署成功,但是在浏览器启动时,我收到了404错误。我检查了Tomcat/webapp目录,不知为什么没有找到应用