Struts项目中的相对路径和绝对路径

博客背景:

在SSH项目开发的过程中,肯定会涉及css和js文件的引用,那么就涉及到了在Struts中的绝对路径和相对路径的问题了。像我一早上就吃了这个亏。现在把经验整理出来让大家看看。

一、相对路径

例如:

<`link` rel="stylesheet" type="text/css" href="ynjsp/img/image/hospital.jpg" />

相对路径是基于当前文件位置,通过ynjsp/img/image/hospital.jpg去寻找相应文件,注意这个路径前面是没有 / 的,但是在struts中被解释为相对于根目录的webapps下的路径,被服务器解释的地址为:

http://localhost:8080/YNGZJB/ynjsp/img/image/hospital.jpg

其中YNGZJB是项目名称。

二、绝对路径
绝对路径的引用格式:

/ynjsp/img/image/hospital.jpg

前面有 /
这个地址别服务器解释为:

http://localhost:8080/ynjsp/img/image/hospital.jpg

在struts中直接被解释为顶级目录,从而会导致404错误。

在项目中一个文件夹下的页面也许没事,相同的路径,所有的css/js文件都能显示出来,但是当一个jsp文件文件结构发生变化,比如将为与Ajsp中的index.jsp移到webapps目录下面,这时,在Ajsp下面的其它jsp页面,即使代码和其他文件结构都没有动,但是现在所有的原本在Ajsp中的所有页面都出现了css/js/image文件丢失的问题,这个也是困扰了我好久的原因,现在还没解决,有小伙伴能帮我吗?求大神解释!!!
在困扰了许久,我只有换了一种更为稳妥的方法,就是将所有的css/js/image文件目录都换成绝对路径,这样就不会有上述的烦恼了。

  • 方法介绍:
    我们可以在webapps下面定义一个名为inc的文件夹,在文件夹中定义一个constants.inc文件,在文件中通过struts标签将文件的目录进行定义,将他定义为常量,然后再jsp中就可以通过${}这样的形式将js和css以绝对路径的方式引入进jsp页面,这样就避免了上述的问题。
<s:set name="SERVELET_PATH" value="#request.get('javax.servlet.forward.context_path')"/>
<s:set name="URL_PATH" value="#request.get('javax.servlet.forward.context_path')"/>
<s:set name="JS_PATH" value="#URL_PATH+'/ynjsp/js/'"/>
<s:set name="IMAGE_PATH" value="#URL_PATH+'/ynjsp/img/'"/>
<s:set name="CSS_PATH" value="#URL_PATH+'/ynjsp/css/'"/>

在文件中使用struts标签别忘了引入struts标签哦。

<%@ taglib prefix="s" uri="/struts-tags" %>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值