原文地址:https://blog.csdn.net/qq_21875331/article/details/96278301
该文章参考: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 test.jar > test.log 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目录,使用外部容器进行启动
jar包和war包的区别
Jar包和War包
JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为 J2EE 应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件)。其实jar包就是java的类进行编译生成的class文件就行打包的压缩包而已。里面就是一些class文件。
这是jar的里面的class文件。
War包:war是一个可以直接运行的web模块,通常用于网站,打成包部署到容器中。以Tomcat来说,将war包放置在其\webapps\目录下,然后启动Tomcat,这个包就会自动解压,就相当于发布了,它可以包含 Servlet、HTML页面、Java类、图像文件,以及组成Web应用程序的其他资源,而不仅仅是类的归档文件。
war包的目录结构
注:如果一个Web应用程序的目录和文件非常多,那么将这个Web应用程序部署到另一台机器上,就不是很方便了,我们可以将Web应用程序打包成Web 归档(WAR)文件,这个过程和把Java类文件打包成JAR文件的过程类似。利用WAR文件,可以把Servlet类文件和相关的资源集中在一起进行发布。在这个过程中,Web应用程序就不是按照目录层次结构来进行部署了,而是把WAR文件作为部署单元来使用。
区别:WAR文件代表了一个Web应用程序,JAR是类和相关资源的归档文件。