Tomcat无法找到Spring控制器

时间:2016-06-15 12:52:14

标签: java spring tomcat intellij-idea spring-boot

我正在尝试使用SpringMVC建立一个非常小的测试项目。 我设法让它运行在目标文件夹中创建的jar文件,如this tutorial中所述。但是,我无法通过IntelliJ IDEA配置部署war文件。

应用:

@SpringBootApplication
public class Application {        
    public static void main(final String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

HelloController中

@Controller
public class HelloController {
    @RequestMapping("/greeting")
    public String greeting(final Model model) {
        model.addAttribute("name", "bla");
        return "greeting";
    }
}

greeting.html

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Getting Started: Serving Web Content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
    <p th:text="'Hello, ' + ${name} + '!'"/>
</body>
</html>

运行配置: Run configuration

工件:

Artifact 结构和目标输出

Structure and target output

我在去#34; localhost:8080 /问候&#34;时得到404.

如果有人能够指出我做错了什么,我会很高兴。

2 个答案:

答案 0 :(得分:0)

我可以看到你将Spring作为独立的应用程序启动

public static void main(final String[] args) {
        SpringApplication.run(Application.class, args);
    }

Tomcat仅适用于servlet应用程序。像通常的控制台应用程序一样启动你的春季应用程序(在主要()方法的Idea中右键单击并选择&#39;运行菜单项)。 然后在浏览器http://localhost:8080/greeting

中请求

spring-boot example

你根本不需要IDEA中的工具来启动应用程序。

因此,如果您想在Tomcat等servlet容器中运行Spring启动作为war,那么请阅读this doc

答案 1 :(得分:0)

根据this comment的建议,我查看了these instructions。我在Application.java中遗漏了一些东西,即:

public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(final SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(final String[] args) {
        SpringApplication.run(Application.class, args);
    }
}