欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot项目打成jar包和war包的区别

程序员文章站 2022-03-12 08:05:33
...

该文章参考:https://blog.csdn.net/qq_32331073/article/details/81544061

SpringBoot默认支持很多模板引擎,但是jsp不是默认支持的范围内,jsp只能在war包中使用,另外必须导入JSP的默认渲染servlet:"org.apache.jasper.servlet.JspServlet",打成war包并且支持jsp必须添加的依赖:

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
 
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
            <version>8.0.36</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>

⚪无论是Jar还是War都能够使用嵌套容器,jar包使用nohup java -jar xxx.jar > 日志名.file 2>&1 &(linux系统)来独立运行,使用tail -f 日志名.file来查看实时日志

⚪但只有war才能部署到外部容器中,且war中必须包含:"src/main/webapp/WEB-INF/web.xml",打包war包时包含wabapp下面内容,打jar包则不包含下main内容

SpringBoot中JSP模板引擎具备使用限制: 
  jsp不能够在jar中使用
  Udertow容器不支持Jsp
  自定义的error.jsp错误页面并不能够复写默认的error handling view,如果你想要自定义错误页面,请尝试其他模板引擎 Custom error pages

⚪如果你将项目打包成jar,就不要使用src/main/webapp目录,打包过程会把wabapp目录给排除

⚪SpringBoot欢迎页支持静态资源和模板引擎,如果项目中不存在""、"/"的Handling请求设置,那么将优先查看静态资源位置中是否存在index.html,否则才会查看index模板,如果都不存在则使用默认欢迎页

Spring5.+中与SpringMVC担负对作用的SpringWebFlux并不是完全依赖于Servlet API,所以不能将它打包成war更不能使用src/main/webapp目录

用户能够直接访问/src/main/webapp中的静态资源,但是不能访问/src/main/resources中的静态资源,但是Spring提供了ResourceHttpRequestHandler来配置src/main/resources(classpath)下指定访问目录
⚪SpringMvc中的拦截器只能够拦截Handling和/src/mainwebapp下的资源,并不能够拦截/src/main/resources下的资源,用户默认不能直接访问/src/mainwebapp/WEB-INF下的资源,但可以通过forward、redirect进行访问

总结:

1、jar包不包含wabapp目录,jar包主要使用在通用功能,不包含webapp目录,打的jar包可以直接放在其他项目的lib使用,使用内部tomcat启动。

2、war包方式,包含webapp目录,打包时包含webapp目录,使用外部容器进行启动