spring boot: Whitelabel Error Page的解决方案

          初次使用spring boot,按照其官网Building a RESTful Web Service搭建运行一个demo,代码如下:

pom.xml

  1. <?xml version=“1.0” encoding=“UTF-8”?>  
  2. <project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”  
  3.     xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>  
  4.     <modelVersion>4.0.0</modelVersion>  
  5.       
  6.     <groupId>personal.timeless</groupId>  
  7.     <artifactId>CommentSystem</artifactId>  
  8.     <packaging>war</packaging>  
  9.     <version>0.0.1-SNAPSHOT</version>  
  10.       
  11.     <name>CommentSystem Maven Webapp</name>  
  12.     <url>http://maven.apache.org</url>  
  13.       
  14.     <parent>  
  15.         <groupId>org.springframework.boot</groupId>  
  16.         <artifactId>spring-boot-starter-parent</artifactId>  
  17.         <version>1.4.2.RELEASE</version>  
  18.     </parent>  
  19.   
  20.     <dependencies>  
  21.         <dependency>  
  22.             <groupId>org.springframework.boot</groupId>  
  23.             <artifactId>spring-boot-starter-web</artifactId>  
  24.         </dependency>  
  25.         <dependency>  
  26.             <groupId>org.springframework.boot</groupId>  
  27.             <artifactId>spring-boot-starter-test</artifactId>  
  28.             <scope>test</scope>  
  29.         </dependency>  
  30.         <dependency>  
  31.             <groupId>com.jayway.jsonpath</groupId>  
  32.             <artifactId>json-path</artifactId>  
  33.             <scope>test</scope>  
  34.         </dependency>  
  35.     </dependencies>  
  36.   
  37.     <properties>  
  38.         <java.version>1.8</java.version>  
  39.     </properties>  
  40.   
  41.   
  42.     <build>  
  43.         <plugins>  
  44.             <plugin>  
  45.                 <groupId>org.springframework.boot</groupId>  
  46.                 <artifactId>spring-boot-maven-plugin</artifactId>  
  47.             </plugin>  
  48.         </plugins>  
  49.     </build>  
  50.   
  51.     <repositories>  
  52.         <repository>  
  53.             <id>spring-releases</id>  
  54.             <url>https://repo.spring.io/libs-release</url>  
  55.         </repository>  
  56.     </repositories>  
  57.     <pluginRepositories>  
  58.         <pluginRepository>  
  59.             <id>spring-releases</id>  
  60.             <url>https://repo.spring.io/libs-release</url>  
  61.         </pluginRepository>  
  62.     </pluginRepositories>  
  63. </project>  
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>personal.timeless</groupId>
    <artifactId>CommentSystem</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>

    <name>CommentSystem Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.2.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-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>


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

    <repositories>
        <repository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
</project>

controller Comment.java

  1. import org.springframework.web.bind.annotation.RequestMapping;  
  2. import org.springframework.web.bind.annotation.RequestParam;  
  3. import org.springframework.web.bind.annotation.RestController;  
  4.   
  5. @RestController  
  6. public class Comments {  
  7.       
  8.     @RequestMapping(“/greeting”)  
  9.     public String greeting(@RequestParam(value=“name”, defaultValue=“World”) String name) {  
  10.         return name;  
  11.     }  
  12. }  
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Comments {

    @RequestMapping("/greeting")
    public String greeting(@RequestParam(value="name", defaultValue="World") String name) {
        return name;
    }
}

主文件 App.java

  1. import org.springframework.boot.SpringApplication;  
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  3.   
  4. @SpringBootApplication  
  5. public class App  
  6. {  
  7.     public static void main(String[] args) throws Exception {  
  8.         SpringApplication.run(App.class, args);  
  9.     }  
  10. }  
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App
{
    public static void main(String[] args) throws Exception {
        SpringApplication.run(App.class, args);
    }
}

运行起来没报错,但是打开浏览器输入地址http://localhost:8080/greeting出现以下页面

检查地址没问题,核对jar包也正确。google,有说少jar包,按照回答添加以后也无济于事。折腾了一会找到了原因

竟然时目录文件结构问题,最后附上官网说明http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-structuring-your-code

  1. 14.2 Locating the main application class  
  2. We generally recommend that you locate your main application class in a root package above other classes. The @EnableAutoConfiguration annotation is often placed on your main class, and it implicitly defines a base “search package” for certain items. For example, if you are writing a JPA application, the package of the @EnableAutoConfiguration annotated class will be used to search for @Entity items.  
  3.   
  4. Using a root package also allows the @ComponentScan annotation to be used without needing to specify a basePackage attribute. You can also use the @SpringBootApplication annotation if your main class is in the root package.  
  5.   
  6. Here is a typical layout:  
  7.   
  8. com  
  9.  +- example  
  10.      +- myproject  
  11.          +- Application.java  
  12.          |  
  13.          +- domain  
  14.          |   +- Customer.java  
  15.          |   +- CustomerRepository.java  
  16.          |  
  17.          +- service  
  18.          |   +- CustomerService.java  
  19.          |  
  20.          +- web  
  21.              +- CustomerController.java  
14.2 Locating the main application class
We generally recommend that you locate your main application class in a root package above other classes. The @EnableAutoConfiguration annotation is often placed on your main class, and it implicitly defines a base “search package” for certain items. For example, if you are writing a JPA application, the package of the @EnableAutoConfiguration annotated class will be used to search for @Entity items.

Using a root package also allows the @ComponentScan annotation to be used without needing to specify a basePackage attribute. You can also use the @SpringBootApplication annotation if your main class is in the root package.

Here is a typical layout:

com
 +- example
     +- myproject
         +- Application.java
         |
         +- domain
         |   +- Customer.java
         |   +- CustomerRepository.java
         |
         +- service
         |   +- CustomerService.java
         |
         +- web
             +- CustomerController.java


                </div>

          初次使用spring boot,按照其官网Building a RESTful Web Service搭建运行一个demo,代码如下:

pom.xml

  1. <?xml version=“1.0” encoding=“UTF-8”?>  
  2. <project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”  
  3.     xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>  
  4.     <modelVersion>4.0.0</modelVersion>  
  5.       
  6.     <groupId>personal.timeless</groupId>  
  7.     <artifactId>CommentSystem</artifactId>  
  8.     <packaging>war</packaging>  
  9.     <version>0.0.1-SNAPSHOT</version>  
  10.       
  11.     <name>CommentSystem Maven Webapp</name>  
  12.     <url>http://maven.apache.org</url>  
  13.       
  14.     <parent>  
  15.         <groupId>org.springframework.boot</groupId>  
  16.         <artifactId>spring-boot-starter-parent</artifactId>  
  17.         <version>1.4.2.RELEASE</version>  
  18.     </parent>  
  19.   
  20.     <dependencies>  
  21.         <dependency>  
  22.             <groupId>org.springframework.boot</groupId>  
  23.             <artifactId>spring-boot-starter-web</artifactId>  
  24.         </dependency>  
  25.         <dependency>  
  26.             <groupId>org.springframework.boot</groupId>  
  27.             <artifactId>spring-boot-starter-test</artifactId>  
  28.             <scope>test</scope>  
  29.         </dependency>  
  30.         <dependency>  
  31.             <groupId>com.jayway.jsonpath</groupId>  
  32.             <artifactId>json-path</artifactId>  
  33.             <scope>test</scope>  
  34.         </dependency>  
  35.     </dependencies>  
  36.   
  37.     <properties>  
  38.         <java.version>1.8</java.version>  
  39.     </properties>  
  40.   
  41.   
  42.     <build>  
  43.         <plugins>  
  44.             <plugin>  
  45.                 <groupId>org.springframework.boot</groupId>  
  46.                 <artifactId>spring-boot-maven-plugin</artifactId>  
  47.             </plugin>  
  48.         </plugins>  
  49.     </build>  
  50.   
  51.     <repositories>  
  52.         <repository>  
  53.             <id>spring-releases</id>  
  54.             <url>https://repo.spring.io/libs-release</url>  
  55.         </repository>  
  56.     </repositories>  
  57.     <pluginRepositories>  
  58.         <pluginRepository>  
  59.             <id>spring-releases</id>  
  60.             <url>https://repo.spring.io/libs-release</url>  
  61.         </pluginRepository>  
  62.     </pluginRepositories>  
  63. </project>  
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>personal.timeless</groupId>
    <artifactId>CommentSystem</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>

    <name>CommentSystem Maven Webapp</name>
    <url>http://maven.apache.org</url>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.2.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-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>


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

    <repositories>
        <repository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
</project>

controller Comment.java

  1. import org.springframework.web.bind.annotation.RequestMapping;  
  2. import org.springframework.web.bind.annotation.RequestParam;  
  3. import org.springframework.web.bind.annotation.RestController;  
  4.   
  5. @RestController  
  6. public class Comments {  
  7.       
  8.     @RequestMapping(“/greeting”)  
  9.     public String greeting(@RequestParam(value=“name”, defaultValue=“World”) String name) {  
  10.         return name;  
  11.     }  
  12. }  
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Comments {

    @RequestMapping("/greeting")
    public String greeting(@RequestParam(value="name", defaultValue="World") String name) {
        return name;
    }
}

主文件 App.java

  1. import org.springframework.boot.SpringApplication;  
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;  
  3.   
  4. @SpringBootApplication  
  5. public class App  
  6. {  
  7.     public static void main(String[] args) throws Exception {  
  8.         SpringApplication.run(App.class, args);  
  9.     }  
  10. }  
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App
{
    public static void main(String[] args) throws Exception {
        SpringApplication.run(App.class, args);
    }
}

运行起来没报错,但是打开浏览器输入地址http://localhost:8080/greeting出现以下页面

检查地址没问题,核对jar包也正确。google,有说少jar包,按照回答添加以后也无济于事。折腾了一会找到了原因

竟然时目录文件结构问题,最后附上官网说明http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-structuring-your-code

  1. 14.2 Locating the main application class  
  2. We generally recommend that you locate your main application class in a root package above other classes. The @EnableAutoConfiguration annotation is often placed on your main class, and it implicitly defines a base “search package” for certain items. For example, if you are writing a JPA application, the package of the @EnableAutoConfiguration annotated class will be used to search for @Entity items.  
  3.   
  4. Using a root package also allows the @ComponentScan annotation to be used without needing to specify a basePackage attribute. You can also use the @SpringBootApplication annotation if your main class is in the root package.  
  5.   
  6. Here is a typical layout:  
  7.   
  8. com  
  9.  +- example  
  10.      +- myproject  
  11.          +- Application.java  
  12.          |  
  13.          +- domain  
  14.          |   +- Customer.java  
  15.          |   +- CustomerRepository.java  
  16.          |  
  17.          +- service  
  18.          |   +- CustomerService.java  
  19.          |  
  20.          +- web  
  21.              +- CustomerController.java  
14.2 Locating the main application class
We generally recommend that you locate your main application class in a root package above other classes. The @EnableAutoConfiguration annotation is often placed on your main class, and it implicitly defines a base “search package” for certain items. For example, if you are writing a JPA application, the package of the @EnableAutoConfiguration annotated class will be used to search for @Entity items.

Using a root package also allows the @ComponentScan annotation to be used without needing to specify a basePackage attribute. You can also use the @SpringBootApplication annotation if your main class is in the root package.

Here is a typical layout:

com
 +- example
     +- myproject
         +- Application.java
         |
         +- domain
         |   +- Customer.java
         |   +- CustomerRepository.java
         |
         +- service
         |   +- CustomerService.java
         |
         +- web
             +- CustomerController.java


                </div>

猜你喜欢

转载自blog.csdn.net/qq_36938933/article/details/79403599