在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了一下,发现有人似乎有相同的问题,但是说不清楚,所以请教明白之人点破一下
-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了一下,发现有人似乎有相同的问题,但是说不清楚,所以请教明白之人点破一下
解决方案 »
- java计算器
- 关于用java实现网路语音聊天的问题??
- 怎么实现网络上打开服务器上的文件?另有好的方法也可。帮忙侃侃!
- 想为自己J2EE的应用找一个Internet上的发布平台吗?有一个好去处哦!
- java前台和后台传递数据哪种技术好
- 向新浪svn提交代码。求解答
- jsp如何实现用户之间发送短信息,用什么技术实现?
- 大家帮忙推荐一个不错的虚拟主机,支持jsp,数据库
- 请教一个会话管理的问题
- springboot项目启动报错Attribute 'proxyBeanMethods' in annotation [org.springframework.
- displaytag 导出问题
- jsp 打印问题
但是我建议你不设置basePath,每次都从项目根文件夹下取路径(如/PROJECT/index.jsp).
<script type="text/javascript" src="ext2/ext-all.js"> </script>这样写!
在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后没有应用名。