项目中 关于相对路径和绝对路径的问题
2017-10-25 13:56
176 查看
一般情况下最好用绝对路径 <%=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页面里写死的相对路径就无法访问到对应的资源了。所以要使用绝对路径访问。
例如:
假如我们要访问这个页面,http://localhost:8080/web/jsp/abc.jsp
abc.jsp的相对路径是http://localhost:8080/web/jsp/,abc.jsp里引用了../js/jquery.js,这时候直接访问abc.jsp是没有问题的。
但如果由以下三个请求转发到abc.jsp来访问
1. http://localhost:8080/web/business/test/test.jsp
相对路径是http://localhost:8080/web/business/test/,访问js需要使用../../js/jquery.js
2. http://localhost:8080/web/struts/action/test.action
相对路径是http://localhost:8080/web/struts/test/,(?)访问js需要使用../../js/jquery.js
相对路径是http://localhost:8080/web/struts/action/
3. http://localhost:8080/web/servlet
相对路径是http://localhost:8080/web/,访问js需要使用js/jquery.js
这时候abc.jsp里的../js/jquery.js的死路径就不能正确访问到js了。
===========================================
而真正的相对于web工程的绝对路径写法是:/ 代表url根路径,例如http://localhost:8080/web/js/jquery.js里的http://localhost:8080/,而./代表web工程根路径http://localhost:8080/web/
所以你还可以这么写:
1. /web/js/jquery.js
2. ./js/jquery.js
--例如:
<script type="text/javascript" src="http://localhost:8088/项目名/放在webapp下的js文件夹/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="/test项目名/放在webapp下的js文件夹/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="./放在webapp下的js文件夹/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="./js/score.js"></script>
建立的目录:
WebRoot
1 business-test-test.jsp
2 js-jquery-1.8.1.js
3 jsp-abc.jsp
其中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页面里写死的相对路径就无法访问到对应的资源了。所以要使用绝对路径访问。
例如:
假如我们要访问这个页面,http://localhost:8080/web/jsp/abc.jsp
abc.jsp的相对路径是http://localhost:8080/web/jsp/,abc.jsp里引用了../js/jquery.js,这时候直接访问abc.jsp是没有问题的。
但如果由以下三个请求转发到abc.jsp来访问
1. http://localhost:8080/web/business/test/test.jsp
相对路径是http://localhost:8080/web/business/test/,访问js需要使用../../js/jquery.js
2. http://localhost:8080/web/struts/action/test.action
相对路径是http://localhost:8080/web/struts/test/,(?)访问js需要使用../../js/jquery.js
相对路径是http://localhost:8080/web/struts/action/
3. http://localhost:8080/web/servlet
相对路径是http://localhost:8080/web/,访问js需要使用js/jquery.js
这时候abc.jsp里的../js/jquery.js的死路径就不能正确访问到js了。
===========================================
而真正的相对于web工程的绝对路径写法是:/ 代表url根路径,例如http://localhost:8080/web/js/jquery.js里的http://localhost:8080/,而./代表web工程根路径http://localhost:8080/web/
所以你还可以这么写:
1. /web/js/jquery.js
2. ./js/jquery.js
--例如:
<script type="text/javascript" src="http://localhost:8088/项目名/放在webapp下的js文件夹/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="/test项目名/放在webapp下的js文件夹/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="./放在webapp下的js文件夹/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="./js/score.js"></script>
建立的目录:
WebRoot
1 business-test-test.jsp
2 js-jquery-1.8.1.js
3 jsp-abc.jsp
相关文章推荐
- 关于Web中的相对路径和绝对路径问题
- 关于java编译与运行时绝对路径与相对路径问题
- 笔记:关于相对路径与绝对路径中遇到的问题
- web项目中,视图层中关于相对路径和绝对路径
- 关于java和web项目中的相对路径问题
- web项目中,视图层中关于相对路径和绝对路径
- 关于tar打包绝对路径问题(相对路径)
- JavaWeb 项目中的绝对路径和相对路径问题
- JavaWeb项目中的绝对路径与相对路径问题
- 关于java和web项目中的相对路径问题
- 关于java中相对路径,绝对路径问题总结
- 在JAVA WEB项目中,JSP中的图片无法显示,绝对路径和相对路径问题的解决办法。
- [原创]java WEB学习笔记35:java WEB 中关于绝对路径 和相对路径问题
- 关于java和web项目中的相对路径问题
- 关于java和web项目中的相对路径问题
- new File(path)关于这个path的绝对与相对路径问题(ps部分 dos下切换盘符,user.dir解释)
- 关于h5中图片不显示的问题之绝对路径和相对路径
- JavaWeb 项目中的绝对路径和相对路径以及问题的解决方式
- 同一tomcat部署多个项目相对路径绝对路径问题示例
- 关于java的绝对路径和相对路径问题