spring boot项目进行war部署,对于静态资源无法访问的问题

Posted qchen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot项目进行war部署,对于静态资源无法访问的问题相关的知识,希望对你有一定的参考价值。

记录下jar和war部署方式随意切换部署的一个解决方案,对于如何修改为自定义的目录,这边未说明。

 

在spring boot开发时一般是直接application运行的(与jar部署一样),因此使用jar部署的时候可以直接运行,静态资源都可以访问;

如果我们需要进行war方式部署呢,静态资源有可能就方法不到,因为war方式部署的访问方式和jar的不同需要带上项目名称:

例如:

  jar部署:http://localhost:8080/index.html

  war部署:http://localhost:8080/项目名/index.html

因此index.html中加载的css等就需要加上项目名

例如:

  jar部署:<link href="/css/style.css" rel="stylesheet">

  war部署:<link href="/项目名/css/style.css" rel="stylesheet">

根据以上的规则如果在项目部署的时候能在jar和war能够相互切换使用的话,比较好的一种解决方法是在页面开发的时候加上<base>标签;

此处已thymeleaf模板的为例,在html的head中加上<base th:href="@{/}">

然后引用的js或css的路劲不要写绝对路径就可以了(thymeleaf中一般会将头部和底部单独提取出来,因此只要在公共的头部加入就可以了)

技术图片

 

 

以上是关于spring boot项目进行war部署,对于静态资源无法访问的问题的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 部署浅析(jar or war)

宝塔面板部署Spring Boot项目

一个 Spring Boot 项目,部署到 JAR 或 WAR

spring boot项目打成war包部署到tomcat

玩转spring boot——war部署

Java之Spring Boot入门到精通,Spring Boot项目部署jar包方式,war包方式(一篇文章精通系列)