首页 > 解决方案 > SpringBoot 白页

问题描述

我刚开始学习SpringBoot。

我使用 spring boot 内置 tomcat 运行我的 spring boot 程序。但是当我尝试访问该页面时,它给了我一个Whitelabel Error Page

当我启动这个程序时,它显示如下:

在此处输入图像描述

我认为我的程序和tomcat启动成功。

这是我的开始代码: DemoApplication.java

@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(DemoApplication.class);
    }

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


}

这是我的控制器代码:

BookController.java

@Controller
public class BookController {
    private IBookService bookService;

    public BookController(IBookService bookService) {
        this.bookService = bookService;
    }

    @RequestMapping(value = "/book_list", method = RequestMethod.GET)
    public String getAllBook(Model model, HttpSession httpSession, HttpRequest httpRequest) throws Exception {
        List<Book> list = bookService.getAllBook();
        model.addAttribute("bookList", list);
        return "book";
    }
}

因此,如果我访问“ localhost:8080/bookstore/book_list ”,它将找到控制器,并且该控制器应该帮助我转到 /WEB-INF/jsp/book.jsp,因为我的 WebMvcConfig 如下所示:

WebMvcConfig.java

@Configuration
public class WebMvcConfig {
    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/jsp/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

但为什么这是一个白页?

这是我的程序结构:

在此处输入图像描述

标签: javaspringspring-bootspring-mvctomcat

解决方案


DemoApplication在一个demo子包中。默认情况下,它只扫描带有注释的类的子包@SpringBootApplication,因此它不会找到您的任何组件。

两种修复方法:

  1. 将类移出demo包。

    这是 Spring Boot 演示应用程序通常所做的。

  2. 指定要扫描的包:

    @SpringBootApplication(scanBasePackages = "com.zx")
    

    或者,使用@ComponentScan相同的东西:

    @SpringBootApplication
    @ComponentScan("com.zx")
    

推荐阅读