转载

SpringBoot项目打成jar与war的区别

  • SpringBoot默认支持很多模板引擎,但是JSP只能够在War中使用,同时 mvc.view.prifix/suffix 必须主动配置给出,另外必须导入JSP的默认渲染servlet: "org.apache.jasper.servlet.JspServlet" ,即添加依赖:
<dependency>
   		<groupId>org.apache.tomcat.embed</groupId>
   		<artifactId>tomcat-embed-jasper</artifactId>
   		<scope>provided</scope>
   	</dependency>
复制代码
  • 无论是Jar还是War都能够使用嵌套容器, java -jar 来独立运行
  • 但只有war才能部署到外部容器中,且war中必须包含: "src/main/webapp/WEB-INF/web.xml"
  • SpringBoot中JSP模板引擎具备使用限制:
  • jsp不能够在jar中使用
  • Udertow容器不支持Jsp
  • 自定义的 error.jsp 错误页面并不能够复写默认的 error handling view ,如果你想要自定义错误页面,请尝试其他模板引擎 Custom error pages
  • 如果你将项目打包成jar,就不要使用 src/main/webapp 目录,尽管该目录也是一个公共标准,但是它仅仅在war中有效,因为生成jar的构建工具将会自动把该目录忽略

Do not use the src/main/webapp directory if your application is packaged as a jar . Although this directory is a common standard, it works only with war packaging, and it is silently ignored by most build tools if you generate a jar.

  • SpringBoot的 欢迎页 同时支持 静态资源模板引擎 ,如果项目中不存在 " "、"/"Handling ,那么将优先查看静态资源位置中是否存在 index.html ,否则才会查看 index模板 ,如果 都不存在 将使用 默认欢迎页
Spring Boot supports both static and templated welcome pages. It first looks for an index.html file in the configured static content locations. If one is not found, it then looks for an index template. If either is found, it is automatically used as the welcome page of the application.
  • Spring5.+ 中与 SpringMVC 担负对 作用的 SpringWebFlux 并不是完全依赖于 Servlet API ,所以不能将它打包成 war 更不能使用 src/main/webapp 目录

Spring WebFlux applications do not strictly depend on the Servlet API , so they cannot be deployed as war files and do not use the src/main/webapp directory.

  • 用户能够直接访问 src/main/webapp 中的静态资源,但并不能直接访问 src/main/resources 中的静态资源,但是Spring提供了 ResourceHttpRequestHandler 来配置 src/main/resources(classpath) 下指定访问目录
  • MVC中 Interceptor 只能够拦截 Handlingsrc/main/webapp 中的静态资源,对 src/main/resources 中的静态资源无效
  • 默认状态下,用户不具备 src/main/webapp/WEB-INF 的直接访问权限,但是可以通过程序中 forwardredirect 达到 间接 访问的目的,所以war项目中通常会将需要控制权限的资源文件放入到 WEB-INF
  • 另外可见: Spring工程访问src/main/resources与src/main/webapp下静态资源的区别
原文  https://juejin.im/post/5da970525188254bef4634f7
正文到此结束
Loading...