小编典典

Spring Boot使用带有JSP模板的资源模板文件夹而不是Webapp文件夹?

spring-boot

我启动了一个Spring Boot
MVC项目,并意识到其中有两个文件夹resources。一个叫templates另一个static。我真的很喜欢这个文件夹设置。

问题是我在视图中使用了JSP模板。我无法将.jsp模板放在templates文件夹中并使它工作。我需要做的是建立一个webapp在同一水平上的文件夹srcresources。将我的JSP模板放在那里,然后可以找到我的视图。

我需要重新配置以实际使用templates位于其中的文件夹中的JSP模板resources吗?


阅读 561

收藏
2020-05-30

共1个答案

小编典典

根据Maven文档,
src/main/resources最终将出现WEB-INF/classes在WAR中。

这为您的Spring Boot提供了诀窍application.properties

spring.mvc.view.prefix = /WEB-INF/classes/templates
spring.mvc.view.suffix = .jsp

如果您更喜欢Java配置,则可以采用以下方法:

@EnableWebMvc
@Configuration
public class ApplicationConfiguration extends WebMvcConfigurerAdapter {

    @Bean
    public ViewResolver jspViewResolver() {
        InternalResourceViewResolver bean = new InternalResourceViewResolver();
        bean.setPrefix("/WEB-INF/classes/templates/");
        bean.setSuffix(".jsp");
        return bean;
    }
}

更新完整的示例

该示例基于Spring的初始化程序(具有“
Web”依赖性的Gradle项目)。我只是添加apply plugin: 'war'build.gradle,添加/更改了以下文件,使用构建了这个项目gradle war并将其部署到了我的应用服务器(Tomcat
8)。

这是此示例项目的目录树:

\---src
    +---main
        +---java
        |   \---com
        |       \---example
        |           \---demo
        |                   ApplicationConfiguration.java
        |                   DemoApplication.java
        |                   DemoController.java
        |
        \---resources
            +---static
            \---templates
                    index.jsp

ApplicationConfiguration.java:参见上文

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) throws Exception {
        SpringApplication.run(DemoApplication.class, args);
    }

}

DemoController.java:

@Controller
public class DemoController {

    @RequestMapping("/")
    public String index() {
        return "index";
    }
}

index.jsp:

<html>
    <body>
        <h1>Hello World</h1>
    </body>
</html>
2020-05-30