繁体   English   中英

Spring Boot MVC 模板 - tomcat7 给出 404 错误

[英]Spring boot MVC template - tomcat7 giving 404 error

如果我调用我的 tomcat 服务器的默认 url,我会看到一个错误 404。程序运行没有任何问题,但也许 restcontroller 被禁用(我不知道,通常不会)。 日志中没有错误。 起始页是 html 格式。 我设置了默认路径(见下文)。

我使用 Spring Boot 和 tomcat7。

请求的资源 (/dashboard/) 不可用。

Spring Boot 路径src\\main\\resources\\templates\\index.html

战争中的 index.html 路径: ..\\tomcat7\\webapps\\dashboard\\WEB-INF\\classes\\templates\\index.html

主要的

@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackages = "com.###.dashboard")
@EnableJpaRepositories
@EntityScan(basePackages = "com.###.dashboard.domain")
public class Dashboard extends SpringBootServletInitializer  {

    public static void main(String[] args) {
        SpringApplication.run(new Object[] {Dashboard.class, DashboardController.class}, args);    
    }

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


}

休息控制器

@RestController
public class DashboardController {


    /**
     *...
     */
    @RequestMapping("/")
    public String setPage(Model model) {

        // ...

        return "index";
    }
}

绒球

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.###.dashboard</groupId>
  <artifactId>Dashboard</artifactId>
  <packaging>war</packaging>
  <version>1.0</version>
  <name>Dashboard</name>
  <url>http://maven.apache.org</url>

     <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.8.RELEASE</version>
    </parent>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mobile</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>


        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>   

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>       

    </dependencies>

    <properties>
        <start-class>com.###.dashboard.main.Dashboard</start-class>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>


        </plugins>
    </build>

</project>

tomcat7 服务器

2014-12-05 13:31:46.836  INFO 28052 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/],methods=[],param
s=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.###.dashboard.domain.DashboardController.setPage(org.springframework.ui.Model)

谢谢

尝试将模板放在src/main/resources/templates (它是 spring boot 的另一个默认路径)

它对我有用,资源/模板听起来比资源/资源更好:)

尝试将您的控制器注释为 @Controller 并为控制器提供“/dashboard”默认请求映射,以便仪表板控制器可以响应 uri 以“/dashboard”开头的请求

@Controller
@RequestMapping("/dashboard")
public class DashboardController

使用调试点查看请求是否已通过控制器管道下降,白页可能与空模板相关

这意味着您的 spring 容器无法找到默认页面。 只需将您的主页添加到 src 或对主页进行适当的重定向。 出于测试目的,您可以使用放置主页的 Web 上的完整映射。

通过以下更改,它起作用了。

我注释掉了spring-boot-starter-thymeleaf因为它要求将一些模板放到 /templates 文件夹中。 之后,我将@ResponseBody添加到 RequestMapping 以返回字符串。

    @RequestMapping("/")
    public @ResponseBody String setPage(Model model) {
        return "index";
    }

所以也许你对spring-boot-starter-thymeleaf有问题

注意:我使用命令行mvn spring-boot:run在你的 pom 中使用spring-boot-maven-plugin插件启动了 tomcat

在没有 MAVEN 的情况下使用 Tomcat7 时,这里有很多错误,比如在 spring 中添加休眠验证器和休眠依赖项,请注意一件事更新你的日食。 转移到 Tomcat 8,它设置了 API-3.0,因此每个休眠组件都可以使用它。 甚至一些错误的疑问也可以随意问我。

@navajavadevolper

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM