日期:2014-05-19  浏览次数:20780 次

java项目中jsp引用其他文件路径的困惑
先说一下我的项目目录结构
webcontent--css(文件夹)---具体的各种css文件
                    --js(文件夹)---具体的各种js文件
                    --page(文件夹)---根据不同功能分类的文件夹(AA)---各种jsp文件
现在我在jsp文件中引用js和css文件
<script   type= "text/javascript "   src= "../js/jquery.js "> </script>
<link   href= "../css/style2.css "   rel= "stylesheet "   type= "text/css "   />
引用成功了,但是我对此引用文件的路径有些困惑,就引用js的src= "../js/jquery.js "来说,此jsp文件的../应该是上一级的AA这一层,然而这一层是无论如何也找不到js这个文件夹的,如果我改成src= "../../js/jquery.js "显然没有正确引用jquery.js,不知道我错在哪里,请高手指点,或者讲解一下,谢谢

------解决方案--------------------
一般情况下最好用绝对路径 <%=basePath%>/js/jquery.js
其中basePath是下面的值
<%
 String path = request.getContextPath();
 String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

为什么要这么做?因为从静态的jsp路径来看它和js的路径相对关系是../js/,但是往往很多时候我们不是直接访问jsp页面的,是通过其他的jsp页面或者servlet,或者struts的action通过forward的方式转发过来访问的,这时候请求的当前路径就不是该jsp的路径,而是转发过来之前那个jsp,servlet或action的路径,所以和js的相对路径关系就可能不再是../js/了,而在实际使用中,访问同一个jsp可能由很多不同的来源,那么它的相对路径关系可能随时都可能改变,这时候jsp页面里写死的相对路径就无法访问到对应的资源了。所以要使用绝对路径访问。
------解决方案--------------------
你的目录结构是这种吗?
WebContent
--js
--test.js
--page
--AA
--test.jsp
如果是这样的话,那么在jsp里引用js的话,就这样就可以啊
<script type="text/javascript" src="../../js/test.js"></script>
但是这种方法在项目中使用可能不大好。一般web项目会加上设定的一个基准路径。
------解决方案--------------------
如果你的page下面有AA,然后再是jsp文件的话。引用就应该是前两级目录的,可能是缓存的问题,你清除一下缓存。。。我这里测试过,按你说的目录结构,这样引用就OK
<script type="text/javascript" src="../../js/jquery-1.6.js"></script>
<script type="text/javascript" src="../../js/test.js"></script>