Java Spring boot MVC模板-tomcat7给出404错误

Java Spring boot MVC模板-tomcat7给出404错误,java,spring,maven,spring-mvc,tomcat,Java,Spring,Maven,Spring Mvc,Tomcat,如果调用tomcat服务器的默认url,我将看到错误404。程序运行时没有任何问题,但restcontroller可能已禁用(我不知道,通常不知道)。日志中没有错误。起始页是html格式。我设置了默认路径(见下文) 我正在使用Spring Boot和tomcat7 请求的资源(/dashboard/)不可用 Spring启动路径src\main\resources\templates\index.html 战争中的Index.html路径:。\tomcat7\webapps\dashboard\

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

我正在使用Spring Boot和tomcat7

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

Spring启动路径src\main\resources\templates\index.html

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

Main

@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

@RestController
public class DashboardController {


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

        // ...

        return "index";
    }
}
pom

<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>

谢谢

尝试将模板放入
src/main/resources/templates
(这是spring启动的另一个默认路径)


它适合我,资源/模板听起来比资源/资源好:)

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


它适用于我,资源/模板听起来比资源/资源好:)

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

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

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

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

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

使用调试点查看请求是否已通过控制器管道,白色页面可能与空模板相关,这意味着您的spring容器无法找到默认页面。只需将您的主页添加到src或对主页进行适当的重定向。出于测试目的,您可以在放置主页的web上使用完整的映射。

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

通过以下更改,它可以工作

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

    @RequestMapping("/")
    public @ResponseBody String setPage(Model model) {
        return "index";
    }
因此,您可能对
春季启动程序thymeleaf有问题


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

,并进行了以下更改,它工作正常

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

    @RequestMapping("/")
    public @ResponseBody String setPage(Model model) {
        return "index";
    }
因此,您可能对
春季启动程序thymeleaf有问题


注意:我使用pom中的
spring boot maven插件启动了tomcat,命令行是
mvn spring boot:run

在没有maven的情况下使用Tomcat7时会出现很多错误,比如在spring中添加hibernate验证程序和hibernate依赖项请注意,有一件事要更新eclipse。切换到Tomcat8,它是用API-3.0设置的,所以每个hibernate组件都可以使用它。即使是一些错误的疑问也可以随意问我


@navajavadevolper

在没有MAVEN的情况下使用Tomcat7时,这里有很多get错误,比如在春季添加hibernate验证器和hibernate依赖项请注意,有一件事可以更新eclipse。切换到Tomcat8,它是用API-3.0设置的,所以每个hibernate组件都可以使用它。即使是一些错误的疑问也可以随意问我


@navajavadevolper

当您向“/”/=white page、/dashboard/=请求的资源(/dashboard/)不可用时会发生什么情况。可能不是问题,但听起来您只是想要
@Controller
,而不是
@RestController
。RestController用于直接处理序列化数据,而不是查看resolverI昨天尝试了@Controller,同样的问题我也遇到了同样的问题。原来我忘了在pom.xml文件中添加
spring boot starter thymeleaf
依赖项,但是我可以看到您这样做了。。。您是否尝试转到pom.xml文件并运行
mvn clean install package
?下载的依赖项可能与pom文件不同步。当您向“/?/=白色页面,/dashboard/=请求的资源(/dashboard/)发出请求时会发生什么情况。可能不是问题,但听起来您只是想要
@Controller
,而不是
@RestController
。RestController用于直接处理序列化数据,而不是查看resolverI昨天尝试了@Controller,同样的问题我也遇到了同样的问题。原来我忘了在pom.xml文件中添加
spring boot starter thymeleaf
依赖项,但是我可以看到您这样做了。。。您是否尝试转到pom.xml文件并运行
mvn clean install package
?下载的依赖项可能与pom文件不同步。很抱歉,我使用了资源/模板。是我的错。问题仍然存在。你对另一个答案的评论是:“主页在那里。”src\main\resources\templates“如果我在eclise中启动项目,我不会收到任何错误,他会找到该页面。”a你确定你将war作为tomcat的根目录,因为另一个路径,例如,如果你将其放在webapps/folder中,将是localhost:8080/folder我确定,我把战争放在根上了对不起,我使用了资源/模板。是我的错。问题仍然存在。请将您的评论发送给