[英]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.