http://www.cnblogs.com/hsapphire/archive/2010/03/17/1688559.html
在tomcat中发布,应用程序目录是这样的
-webapp
|-web-root 目录
---login.jsp 文件
|--ext2 目录
----ext-all.js 文件
|---adapter 目录
|----ext 目录
-----ext-base.js 文件
我的同事写的login.jsp,需要引用ext的js库,文件内容如下:
...............................................
<script type="text/javascript" src="/ext2/adapter/ext/ext-base.js"> </script>
<script type="text/javascript" src="/ext2/ext-all.js"> </script>
.............................................
从相对路径上讲是正确的,但是访问页面时发现实际上服务器找不到这两个文件——这点原因肯定,
我把他修改成
.............................................................
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
................................................................
<script type="text/javascript" src=" <%=basePath%>ext2/adapter/ext/ext-base.js"> </script>
<script type="text/javascript" src==" <%=basePath%>ext2/ext-all.js"> </script>
.............................................
就可以了
但是问题是,我的同事说他以前这样写是可以的,但是不知道为什么现在这样写不行了,我实在说不服他,而且因为从理论上讲,为什么相对路径是正确的,但是服务器又找不到呢?从实现原理上我也讲不清楚
我google了一下,发现有人似乎有相同的问题,但是说不清楚,所以请教明白之人点破一下
--------------------------------------------------------------------------------
如果在head中设置了basePath,则每次路径都得从basePath下开始数,如果没设置basePath,则就用一般的相对路径;
但是我建议你不设置basePath,每次都从项目根文件夹下取路径(如/PROJECT/index.jsp).
--------------------------------------------------------------------------------
js要用相对路径,也就是你调用js方法那个JSP文件相对于js文件的路径
--------------------------------------------------------------------------------
JScript code
<script type="text/javascript" src="adapter/ext/ext-base.js"> </script>
<script type="text/javascript" src="ext2/ext-all.js"> </script>
这样写!
--------------------------------------------------------------------------------
src="/ext2/adapter/ext/ext-base.js"
这实际上是绝对路径,当然,这个绝对路径并不是文件系统中的绝对路径的含义,
在WEB中,相对路径是不以“/”开头的,“/”开头,就是绝对路径。
之所以用这样的路径找不到,是因为
src="/ext2/adapter/ext/ext-base.js"
这句话,是被浏览器解析的,浏览器并不理解WEB应用的上下文,它只能理解它所访问网站的
ip和端口,这样,对浏览器来说:
“/”==“http://ip:port/”
而我们写的web应用,通常都还有一个context,也就是应用名(request.getContextPath()),
如果不指定,是无法找到资源的。
所以:
src="/ext2/adapter/ext/ext-base.js"
相当于
src="http://ip:port/ext2/adapter/ext/ext-base.js"
无法找到
而:
src=" <%=basePath%>/ext2/adapter/ext/ext-base.js"
相当于:
src="http://ip:port/应用名/ext2/adapter/ext/ext-base.js"
可以找到。
你同事原来可以找到,
有可能他原来的应用直接在ROOT下或者被映射到了tomcat的根,
也就是访问的时候,port后没有应用名。
--------------------------------------------------------------------------------
我直接写的js也出现这样的问题
分享到:
相关推荐
基于JavaScript的旅行路径规划算法设计与实现
基于ArcgIs api for js 的路径分析例子,使用百度瓦片地图作为底图,将相关服务地址路径进行更换,即可。
使用three.js基于已有的路径和节点数据 使用d算法实现室内地图点选路径规划 具体效果参见我的博客:https://blog.csdn.net/u014529917/article/details/100424812
基于three.js封装的自定义漫游小代码,传入最少两点三维坐标,即可实现飞行漫游。
NULL 博文链接:https://maidoudao.iteye.com/blog/1511481
在开发javascript插件的过程中,我们有时候需要获取当前JS文件的路径,用于自动加载一些图片、CSS等外部资源,但是javascript文件中并没有像PHP那样的__FILE__常量来供我们取得当前文件路径
基于JavaScript与python的路径规划demo设计与实现
DWR中JS的引用路径问题【前台web】
解决由于IE安全性设置造成的不能正确读取文件路径的问题
SoftUni_JS SoftUni JavaScript路径
arbor.js 一个基于jquery和Web多线程技术的可视化图形库.使用的是最新的HTML5的canvas 2D引擎绘图。除此之外,我对它的源代码进行了修改,增加了新的功能: 1. 路径线条的注释功能 2. 可以动态隐藏路径的线条 3. ...
Path tracing demo with JS in your web browser. 用浏览器JS做路径跟踪渲染。
实现了arcgis js api 最优路径分析,包里有路径分析好的数据,按照推荐的网站发布成网络服务,修改下网页中加载的服务路径,最优路径分析功能就可以运行,里面有本人好的效果。希望帮助到你
js获取相对对路径js获取相对对路径js获取相对对路径
js路径的问题有时候不好处理,在jsp中,我们可以用el表达式直接获取basePath,但是在单独js文件中不能用el表达式,又不想在jsp中单独的写个变量,可以用以下方法: 代码如下: var location = [removed]+”).split(...
方法一、js获取项目根路径的方法 function getRootPath(){ var curPageUrl = [removed].href; var rootPath = curPageUrl.split("//")[0] + curPageUrl.split("//")[1].split("/")[0] + curPageUrl.split("//")...
针对webgl的库threejs框架项目功能实战讲解 实时数据功能:对生产设备设施、传感器、开关控制的实时数据和运行状态查看,在三维场景中实时数据和状态,根据报警级别显示不同设备颜色。 车辆路径导航:工厂车辆位置...
move.js:基于CSS3的JavaScript动画框架
通过网页展示最短路劲算法的过程,js完成
arcgis api for javascript 实现动态轨迹(巡查轨迹)