SpringBoot项目打成jar包和war包的区别
该文章参考: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/main
webapp下的资源,并不能够拦截/src/main/resources下的资源,用户默认不能直接访问
/src/main
webapp/WEB-INF下的资源,但可以通过forward、redirect进行访问
总结:
1、jar包不包含wabapp目录,jar包主要使用在通用功能,不包含webapp目录,打的jar包可以直接放在其他项目的lib使用,使用内部tomcat启动。
2、war包方式,包含webapp目录,打包时包含webapp目录,使用外部容器进行启动
上一篇: jar包和war包区别及理解