当前位置: 首页 > 知识库问答 >
问题:

如何用Spring Boot、Gradle和JSP构造项目

宰坚
2023-03-14

我开始用一本书学习Spring,但我陷入了一个问题。我正在实现这本书的示例,因为我想运行这个应用程序,所以我使用Spring-Boot。我得到的唯一信息是“有一个意外错误(类型=not Found,status=404)。没有可用的消息”。

@EnableAutoConfiguration
public class SpittrWebAppInitializer
        extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] { RootConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] { WebConfig.class };
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SpittrWebAppInitializer.class, args);
    }
}
@Configuration
@EnableWebMvc
@ComponentScan("spitter.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();
    } 
}
@Controller
public class HomeController {

    @RequestMapping(value="/", method=GET)
    public String home() {
        return "home";
    }


}

这就是我正在使用的项目的结构:

├── build
│   ├── classes
│   │   ├── main
│   │   │   └── spittr
│   │   │       ├── config
│   │   │       │   ├── RootConfig.class
│   │   │       │   ├── SpittrWebAppInitializer.class
│   │   │       │   └── WebConfig.class
│   │   │       └── web
│   │   │           └── HomeController.class
│   │   └── test
│   │       └── spittr
│   │           └── web
│   │               └── HomeControllerTest.class
│   └── resources
│       └── main
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
    ├── main
    │   ├── java
    │   │   └── spittr
    │   │       ├── config
    │   │       │   ├── RootConfig.java
    │   │       │   ├── SpittrWebAppInitializer.java
    │   │       │   └── WebConfig.java
    │   │       └── web
    │   │           └── HomeController.java
    │   └── resources
    └── test
        ├── java
        │   └── spittr
        │       └── web
        │           └── HomeControllerTest.java
        └── resources

现在,如果我向localhost:8080发出请求,我会得到404错误,这可能是因为我必须将jsp视图放在ViewResolver可以访问的文件夹中。

在我粘贴的树中,WEB-INF/views/文件夹必须放在哪里?它是必须插入jsp的地方吗?

共有1个答案

吕淮晨
2023-03-14

如果希望在Spring Boot中使用JSP,则必须使用WAR格式而不是fat JAR格式。

请参阅Spring Boot参考手册中关于JSP限制的部分以及Spring Boot JSP示例应用程序。该示例使用Maven,但是如果您遵循Spring Boot参考手册中的指导方针,您将能够使用Gradle获得相同的结果。

 类似资料:
  • 这是用Gradle构建Kotlin+Java9项目的后续。在链接后使用Groovy的Gradle。在我的情况下,使用Kotlin DSL。 基本上我有一个梯度项目与以下结构(只有相关的内容在这里): 问题:如何让链接的post(或任何其他解决方案)中提供的解决方案运行,以便使用Java9/10环境编译带有Gradle的Kotlin DSL的Kotlin项目?

  • 我尝试设置一个JavaEE环境,用gradle构建。最后,我希望有一个EAR文件,其中包含一个EJB-Jar和某种可以部署到Glassfish的应用程序客户端(可能)。设置将是非常基本的。 目前我面临两个问题: 1)运行“耳朵”任务来组装EAR存档在tmp/耳朵中创建了一个错误的application.xml文件,如下所示: eclipse报告的错误消息是: cvc复合型。2.4.答:发现以元素“

  • 我想和Gradle建立一个建立Kotlin代码的项目。我已经按照这里的说明如何设置build.gradle文件,但收到一个错误 这样我就得到了错误: null null Gradle核心插件(插件不在'org.Gradle'命名空间中)-插件存储库(无法解析插件工件>'org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.Gradle.plugin:1

  • 我已经将整个项目上传到了GitHub https://GitHub.com/respectthecode/android-studio-library-example 更新1 根据帕德玛·库马尔的建议,这就是我所尝试的。 null 在构建之后,我得到了这个错误 添加依赖项似乎不会对错误产生任何影响。从上面继续 单击 切换到选项卡 单击并选择 单击和 单击 根据伊森的建议,这就是我们得到的 2个子项

  • 我有一个包含多个子项目的根项目。最初,我们将这些项目作为独立的Maven项目保留,但我意识到Gradle更适合我使用。但是对于其中一个子项目,我们宁可不将其转换为Gradle项目,而将其保留为Maven项目。 root/build.gradle root/common.gradle root/api/pom.xml

  • 不管怎样,现在这个构建由于这个错误而失败,我不知道如何解决它: 错误:package some.package.impl不存在 导入一些。package.impl.roundaboutimpl; 提前感谢!