• js 路径


    在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也出现这样的问题
  • 相关阅读:
    管理者应有意识地提高以下八项能力
    weblogic调优
    嵌入式软件的基本测试方法
    LoadRunner Interview Questions
    测试类型概念解析
    要是下次他们放手机时戴了手套怎么办?
    外企面试智力题
    贴张我家养的狗狗们的照片!
    一样一句
    软件测试工程师面试英语
  • 原文地址:https://www.cnblogs.com/hsapphire/p/1688559.html
Copyright © 2020-2023  润新知