Spring-boot甚至找不到CSS文件

时间:2017-03-11 17:11:14

标签: spring-boot

首先:HTML显示所有css并且无法识别:

第二:项目只运行localhost,但只是给我以下输出并且不启动端口8080:

2017-03-11 12:07:48.579  INFO 2397 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate Core {5.0.12.Final}
2017-03-11 12:07:48.581  INFO 2397 --- [           main] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
2017-03-11 12:07:48.582  INFO 2397 --- [           main] org.hibernate.cfg.Environment            : HHH000021: Bytecode provider name : javassist
2017-03-11 12:07:48.622  INFO 2397 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
2017-03-11 12:07:48.748  INFO 2397 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
2017-03-11 12:07:49.046  INFO 2397 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000227: Running hbm2ddl schema export
2017-03-11 12:07:49.047  INFO 2397 --- [           main] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000230: Schema export complete
2017-03-11 12:07:49.076  INFO 2397 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2017-03-11 12:07:49.544  INFO 2397 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2017-03-11 12:07:49.561  INFO 2397 --- [           main] com.brock.BrockApplication               : Started BrockApplication in 12.875 seconds (JVM running for 13.425)
2017-03-11 12:07:49.562  INFO 2397 --- [       Thread-3] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@21a947fe: startup date [Sat Mar 11 12:07:47 EST 2017]; root of context hierarchy
2017-03-11 12:07:49.564  INFO 2397 --- [       Thread-3] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown
2017-03-11 12:07:49.564  INFO 2397 --- [       Thread-3] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2017-03-11 12:07:49.565  INFO 2397 --- [       Thread-3] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000227: Running hbm2ddl schema export
2017-03-11 12:07:49.565  INFO 2397 --- [       Thread-3] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000230: Schema export complete

Process finished with exit code 0 

文件结构:

enter image description here

在HomeController中我有:

@Controller()
public class HomeController {

    @RequestMapping("/")
    public String home(){
        return "index";
    }
}

JS和CSS文件路径如下所示:

<link rel="stylesheet" href="css/bootstrap.min.css">

根据文档,我把它们放在正确的位置,它应该返回index.html。

-----------------更新1 ----------------

applications.properities

spring.datasource.initialize=true
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=- 1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=brock
spring.datasource.password=password
spring.h2.console.enabled=true

5 个答案:

答案 0 :(得分:3)

导致应用程序立即关闭的问题是由使用 WAR 打包引起的,同时在IntelliJ中将应用程序作为Spring启动应用程序运行。

由于这个原因,IntelliJ不会提供必要的类(因为 spring-boot-starter-tomcat 具有范围提供),如果缺少,则Spring boot赢了不知道它应该作为Web应用程序运行,导致它立即退出。

要解决它:

  1. 评论提供的范围:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <!-- <scope>provided</scope> -->
    </dependency>
    
  2. Tomcat
  3. 中运行该应用程序

    当你解决第一个问题时,你还有另一个问题。您已将HTML文件放在 src / main / resources / templates 文件夹中,而此文件夹只应用于动态模板(Thymeleaf,Freemarker,Groovy,Mustache,...)。 / p>

    但是,目前您的HTML文件只是简单的静态HTML文件,因此您应将它们放在 src / main / resources / static 中。如果它们不是静态HTML文件,则应添加适当的模板引擎,例如 spring-boot-starter-thymeleaf

    如果您使用静态模板,Spring启动会自动解析/index.html,因此您可以删除HomeController

    最后,你说你正在使用以下CSS:

    <link rel="stylesheet" href="css/main.css">
    

    这是正确的方法。但是,在GitHub我发现你正在使用:

    <link rel="stylesheet" href="../../resources/static/css/main.css">
    

    这不是正确的方法。即使文件夹结构正确,在运行时,Spring引导也会在您的上下文路径根(public/)上以templates/运行/。这意味着,即使您在一个文件夹中有index.html而在另一个文件夹中有css/main.css,它仍然有用。

答案 1 :(得分:2)

您可以使用@RestController注释注释HomeController类并再次部署您的应用

答案 2 :(得分:1)

尝试返回modlandview而不是原始字符串?

@RestController()
public class HomeController {

    @RequestMapping("/")
    public ModelAndView home(){
        return new ModelAndView("index");
    }
}

答案 3 :(得分:0)

spring-boot-starter-web添加到依赖项中将使嵌入式tomcat成为默认的servlet容器,默认情况下,您的应用程序将在端口8080上公开。

摇篮:

compile("org.springframework.boot:spring-boot-starter-web")

的Maven:

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

答案 4 :(得分:0)

Teena正确使用@RestController或者如果您使用@Controller添加@ResponseBody注释

@Controller
@ResponseBody
@RequestMapping("/")
public class HomeController {

    @RequestMapping(method = RequestMethod.GET)
    public String get(){
        return "index";
    }

}
相关问题