Spring Boot Whitelabel Error Page几乎无处不在

时间:2017-05-16 16:52:36

标签: spring maven jsp spring-boot

尝试运行Spring Boot以使用JSP页面时遇到一些困难。我知道文档中提供的限制,因此根据规则制作了所有内容。但是,无法找到问题。

我会尝试提供尽可能多的信息。

想要开始使用Spring Boot。我正在使用:

IntelliJ IDEA,Maven,Maven Spring Boot插件,嵌入式Tomcat。 Link项目样本。

REST控制器工作正常,但是当我尝试将jsp链接到公共控制器时,我100%最终得到了Whitelabel错误页面,说明了404.

将文件从WEB-INF移至resources/static无效。

问题是即使我试图运行最简单的快速启动Spring Boot项目,我也面临异常。当我尝试从mkyong站点加载示例时,Here的异常日志。

我尝试手动管理maven依赖项,因为我浏览了一些"潜力"解决方案,发现它可能是jar冲突。我甚至尝试在一个全新的操作系统上启动该项目 - 这是我绝望的程度。

任何指导都将被视为神圣的外阴。

更新

在依赖项中添加mvn spring-boot后尝试使用javax.servlet-api再次运行项目时出现以下错误。经度:

[ERROR] Failed to execute goal org.springframework.boot:spring-boot-
maven-plugin:1.4.5.RELEASE:run (default-cli) on project demo: An 
exception occurred while running. null: InvocationTargetException: 
Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerExceptio
n: Unable to start embedded Tomcat: Failed to start component 
[StandardServer[-1]]: Failed to start component [StandardService[Tomcat]]: 
Failed to start component [StandardEngine[Tomcat]]: A child container 
failed during start -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with 
the -
e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, 
please read the following articles:
[ERROR] [Help 1] 
http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

更新

使用@Piotr Gwiazda的建议,尝试使用Thymeleaf而不是JSP。工作。但是,我想知道为什么JSP没有。

3 个答案:

答案 0 :(得分:2)

出于某种原因,您的代码有两个webapp文件夹。一个(错误的位置)在 src / 下,另一个在(正确) src / main / 下。现在你的WEB-INF / jsp出错了。所以,将它移动到适当的文件夹。

enter image description here

答案 1 :(得分:1)

您可以使用一个这样的示例配置

创建src / main / resources源包并将静态资源放在该位置。

@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
            "classpath:/resources/", "classpath:/static/", "classpath:/public/" };

    @Bean
    public ViewResolver getViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        //resolver.setPrefix("/resources/");
        resolver.setSuffix(".html");
        return resolver;
    }

     @Override
        public void configureDefaultServletHandling(
                DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
    }

}

答案 2 :(得分:0)

似乎您正在尝试使用JSP页面作为HelloController的视图呈现模板。意味着JSP文件可能位于src/main/resources/templates

请注意,JSP不是创建视图的建议方式。我给Thymeleaf或其他人一个机会。 See here