(靠谱) Spring Boot与jsp打包成jar(war)使用

场景

使用 spring boot + html or jsp 组合时 , 目录如下

(靠谱) Spring Boot与jsp打包成jar(war)使用

设置视图代码

@Configuration
@EnableWebMvc
public class MvcConfiguration implements WebMvcConfigurer, ApplicationContextAware {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/html/");
        resolver.setSuffix(".html");
        registry.viewResolver(resolver);
    }

}

但是打成jar包后,访问都是404,经过解压jar包查看,webapp里的文件全没有打包进去,搜索了很多资料,要么说指定spring boot的打包插件,要么是先解压 再把webapp里面的文件放进去,试了均不靠谱,不过解压再放进去这个可以,但是也太麻烦了把。

冷静思考,为啥webapp文件下没被打包进去

顺着打包的思路,在外面的网站上搜到了一篇blog,发现了一个神奇的东西,就是spring boot + jsp, 可以直接打成一个war包,然后直接java -jar xxx.war即可,同时jps|html文件也会被打进去,就不会发生文件找不到的情况了,

打包成war的目录结构解压后如下,多了一个WEB-INF,如果指定的是jar,则WEB-INF不会被打包的jar里,少了这么一个,所以用jar执行就会404出错,

(靠谱) Spring Boot与jsp打包成jar(war)使用

在pom文件中指定packaging

(靠谱) Spring Boot与jsp打包成jar(war)使用

直接java -jar o2o.war即可,

如果想让war丢到tomcat里也可以运行,就在启动类上添加如下代码:

(靠谱) Spring Boot与jsp打包成jar(war)使用

原文blog:https://htr3n.github.io/2018/12/jsp-spring-boot/

注意

不需要改spring-boot-maven-plugin的版本,有的博客说必须指定为1.4.2啥的~ 试了压根不是这么一回事儿,只要视图配好,项目结构对,直接打包成war运行就行了,说白了就是war会包含WEB-INF,而jar不会。

上一篇:File API文件操作之FileReader二


下一篇:Redis之小对象压缩