如果我为我的tomcat服务器调用默认URL,我将看到错误404.程序运行没有任何问题,但可能是restatetroller被禁用(我不知道,通常不会)。日志中没有错误。起始页面是html格式。我设置了默认路径(见下文)。
我使用的是Spring Boot和tomcat7。
请求的资源(/ dashboard /)不可用。
Spring引导路径 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
@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>
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)
谢谢
答案 0 :(得分:0)
尝试将模板放入src/main/resources/templates
(它是弹簧启动的另一个默认路径)
它适用于我,资源/模板听起来比资源/资源更好:)
答案 1 :(得分:0)
尝试将控制器注释为@Controller并将'/ dashboard'默认请求映射到控制器,以便仪表板控制器可以用uri作为'/ dashboard'来回答请求
@Controller
@RequestMapping("/dashboard")
public class DashboardController
使用调试点来查看请求是否已经落入控制器管道,白页可能与空模板有关
答案 2 :(得分:0)
这意味着您的spring容器无法找到默认页面。只需将您的主页添加到src或正确重定向主页。出于测试目的,您可以使用放置主页的Web上的完整映射。
答案 3 :(得分:0)
如果有以下变化,那就有效了。
我评论了spring-boot-starter-thymeleaf
,因为它要求将一些模板放到/ templates文件夹中。
之后我将@ResponseBody
添加到RequestMapping以返回String。
@RequestMapping("/")
public @ResponseBody String setPage(Model model) {
return "index";
}
所以也许你对spring-boot-starter-thymeleaf
注意:我使用命令行spring-boot-maven-plugin
mvn spring-boot:run
插件启动了tomcat
答案 4 :(得分:-2)
在没有 MAVEN 的情况下使用 Tomcat7 时,这里有很多错误,比如在 spring 中添加休眠验证器和休眠依赖项,注意一件事更新你的日食。转移到 Tomcat 8,它设置了 API-3.0,因此每个休眠组件都可以使用它。甚至一些错误疑问也可以随意问我。
@navajavadevolper