为什么我从Hello World SpringBoot中收到WhiteLabel错误?

时间:2018-07-24 14:27:32

标签: java spring spring-mvc spring-boot tomcat

您好,我正在学习Spring,但我不明白为什么会收到白标错误

MAINCLASS:

package com.hello.springhelloworld;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringHelloWorldApplication {

public static void main(String[] args) {
    SpringApplication.run(SpringHelloWorldApplication.class, args);
}

}

HELLOWORLDCLASS:

package web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloWorldController {

@RequestMapping("/hello")
public String sayHello(@RequestParam(value = "name") String name){
    return  "Hello" + name + "!";
}
}

项目结构: enter image description here

错误: enter image description here

2 个答案:

答案 0 :(得分:1)

Spring boot的组件扫描未扫描您的控制器类。

您的控制器类应与SpringHelloWorldApplication类位于同一包中(或在子包中)。

因此您的控制器软件包声明应为:

package com.hello.springhelloworld.web;

package com.hello.springhelloworld;

Spring boot的默认组件扫描将扫描主应用程序类包的同一包或子包中的组件。

答案 1 :(得分:1)

问题是组件扫描不知道您的Web软件包。

另一种方法是,您可以在主班获得@ComponentScan("web")的帮助。

下面是加法(通读您的代码,并认为要写出来)。

致电/hello?name=World后,如果可以预料,它将显示“ Hello World!”。不,它不会显示,除非您有视图将其命名为“ Hello World!”。尝试使用@Controller而不是@RestController。您的消息将被打印。

谢谢!