java - Netbeans Spring Boot Initializr 项目 : Unable to see jsp content in web browser

标签 java maven jsp spring-mvc netbeans

我正在阅读 manning 出版社出版的 Spring in Action,第 4 版,第 5 章是关于 Spring Web App 的。我正在尝试使用 Maven 模板 Spring Boot Initilizr 项目在 Netbeans 中实现教科书示例。 (作者使用Gradle的示例。我想使用Maven项目管理工具) Maven => Spring Boot Initilizr Project

但是,当我尝试在浏览器中查看内容时,我收到“Whitelabel Error Page”。以下是我的项目配置。我应该怎样做才能克服 Web 浏览器中的错误并查看 home.jsp 中存在的内容

My Project Configuration

WebConfig.java内容:

@Configuration
@EnableWebMvc
@ComponentScan("spitter.web")
public class WebConfig extends WebMvcConfigurerAdapter {

    @Bean
        public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver
            = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/pages/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }

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

}

home.jsp内容:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
    <head>
        <title>Spittr</title>
        <link rel="stylesheet"
              type="text/css"
              href="<c:url value="/resources/style.css" />" >
    </head>
    <body>
        <h1>Welcome to Spittr</h1>
        <a href="<c:url value="/spittles" />">Spittles</a> |
        <a href="<c:url value="/spitter/register" />">Register</a>
    </body>
</html>

我能够正确测试测试包中存在的@Test脚本。

最佳答案

我现在意识到问题与我设置项目的方式有关。本书示例(Spring Web MVC)是一个 Web 应用程序,而不是 Spring Boot 应用程序。 Spring Boot 应用程序是独立的应用程序,需要存在 public static void main (String[] args) 。然而,显示 .jsp 页面的 Spring Web MVC 应用程序预计在服务器上运行。因此下面的 Netbeans 模板更相关

enter image description here

一旦选择了这个模板,其余的任务就很简单了。此外,书中示例在几个地方将 spittr 错误地编码为 spitter。这需要纠正,并且已在图书论坛中提到 - https://forums.manning.com/posts/list/38046.page;jsessionid=8A9B66613EC5B4CAB91E1897C5631970 。一旦这些问题得到纠正,应用程序应该可以正常运行。以下是我的项目结构

enter image description here

具有正确包名称的 WebConfig 是

@Configuration
@EnableWebMvc
@ComponentScan("spittr.web")
public class WebConfig
    extends WebMvcConfigurerAdapter {

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver
                = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
            resolver.setExposeContextBeansAsAttributes(true);
            return resolver;
    }

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

带有更正包名称的 RootConfig:

@Configuration
@ComponentScan(basePackages = {"spittr"},
    excludeFilters = {
        @Filter(type = FilterType.ANNOTATION, value = EnableWebMvc.class)
    })
public class RootConfig {
}

关于java - Netbeans Spring Boot Initializr 项目 : Unable to see jsp content in web browser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48493836/

相关文章:

java - 基于 CLI 的 Maven Artifact 启动器 : create classpath based on artifacts in repo and invoke main(. ..)?

java - 使用列表和复选框的 Spring MVC 数据绑定(bind)

java - 尝试在 Java6 中获取 Unix 文件权限时出错

java - 使用 Streams 按特定字符限制对文件中的行进行分组

java - AWS EMR YARN 容量调度程序配置

JSP页面指令

java - 管理jsp mvc登录和注册表单

java - 如果我已经完成向上转换,为什么要重写从子类调用的方法?

java - 将 JDA Discord 机器人上传到 heroku

java - Mojo.getLog() 方法有什么作用?