SpringMVC使用thymeleaft解决js、css等引用路径问题

一、前言

最近做项目,使用的是springmvc框架,前期开发各种css,js的引用使用的是相对路径。
先普及一些路径的基础知识点

二、/和./和…/的含义

“/”表示根目录开始;
“./”表示当前同级目录开始;
“…/”表示上一级目录开始;

三、遇到的问题

例如某个html页面中的引用:

<script src="../../js/login/login.js"></script>

这样看视没什么问题。前端页面可以单独浏览,由于我们要做的是动态网站,不需要前后分离。于是,我将程序打好的名为test.war包丢在tomacat的webapps目录下,运行时发现各种css和js404,遇到这问题。

四、问题分析

遇到这个问题,一看就是资源文件找不到,

尝试解决一

刚开始使用的是根路径,尝试解决,例如我的页面是:http://localhost:8080/test/login.html

使用这样引入:

<script src="/res/js/login/login.js"></script>

这样,我在这个页面可以引入js,不报404,因为程序会自动找到我的项目中的

http://localhost:8080/test/res/js/login/login.js

目录,但是如果我请求了一个接口路径变化成

http://localhost:8080/test/login/login.html

这样我们js的加载路径就变成:

http://localhost:8080/test/login/res/js/login/login.js

这样路径就找不到了,js就404了。这样不行

尝试解决二

想起以前前端使用jsp页面时,经常定义一个base,加上base就可以解决相对路径问题。
例如:

<%   
String path = request.getContextPath();   
String basePath = request.getScheme()+"://" +request.getServerName()+":" +request.getServerPort()+path+"/" ;   
%> 

<base href="<%=basePath%>" > 

引用时候,就可以正常引用了

<script src="/res/js/login/login.js"></script>

但是现在是html,不是jsp,无法使用jsp的标签语法和代码。
这种也适用
网上找了很多方案,感觉都不是很好。

五、比较完美解决方案使用thymeleaf的标签。

我在项目中使用了thymeleaf模板框架。集成thymeleaf就不多介绍了。
这里主要介绍前端。
第一步:使用@{}th:src标签将项目中的js引用换成:

<script th:src="@{/res/js/login/login.js}"></script>

第二步:使用@{}和th:href标签将项目中的css引用换成

<link rel="stylesheet" th:href="@{/res/css/login.css}"/>

替换好以后,部署war包,访问路径,ok没问题,不会404了。
换个应用名部署,访问也没问题。

问题解决,我个人觉得这种方案还是挺好的,分享给大家试试。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值