SpringMVC使⽤thymeleaft解决js、css等引⽤路径问题SpringMVC使⽤thymeleaft解决js、css等引⽤路径问题
⼀、前⾔
最近做项⽬,使⽤的是springmvc框架,前期开发各种css,js的引⽤使⽤的是相对路径。
先普及⼀些路径的基础知识点
⼆、/和./和…/的含义
“/”表⽰根⽬录开始;
“./”表⽰当前同级⽬录开始;
“…/”表⽰上⼀级⽬录开始;
三、遇到的问题
例如某个html页⾯中的引⽤:
<script src="../../js/login/login.js"></script>
这样看视没什么问题。前端页⾯可以单独浏览,由于我们要做的是动态⽹站,不需要前后分离。于是,我将程序打好的名为test.war包丢在tomacat的webapps⽬录下,运⾏时发现各种css和js404,遇到这问题。
四、问题分析
遇到这个问题,⼀看就是资源⽂件不到,
尝试解决⼀
使⽤这样引⼊:
<script src="/res/js/login/login.js"></script>
这样,我在这个页⾯可以引⼊js,不报404,因为程序会⾃动到我的项⽬中的
localhost:8080/test/res/js/login/login.js
⽬录,但是如果我请求了⼀个接⼝路径变化成
localhost:8080/test/login/login.html
这样我们js的加载路径就变成:
这样路径就不到了,js就404了。这样不⾏
尝试解决⼆
想起以前前端使⽤jsp页⾯时,经常定义⼀个base,加上base就可以解决相对路径问题。
例如:
<%
String path = ContextPath();
String basePath = Scheme()+"://" +ServerName()+":" +ServerPort()+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了。
换个应⽤名部署,访问也没问题。
问题解决,我个⼈觉得这种⽅案还是挺好的,分享给⼤家试试。好用的前端框架
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论