开发者社区> 问答> 正文

jsp里部署全局的绝对路径

jsp获取绝对路径可以使用
<c:set var="ctx" value="${pageContext.request.contextPath}"></c:set>
然后我要在js中引用,我看到有人这么用

<script type="text/javascript" >
<!-- 
   CTX = '${pageContext.request.contextPath}';
//-->
</script>

有那位能给我解惑吗,这段js写在类似标签注释的里面,是啥意思?
还有我使用这种写法,比如写ajax时,在url属性里面加上${ctx},不生效又是什么原因?

展开
收起
蛮大人123 2016-03-11 17:57:12 3164 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    上面一种是在服务端执行时,将项目路径存到的PageScope中。

    <c:set var="ctx" value="${pageContext.request.contextPath}"></c:set>
    <% 
        // 实际上就等于这段代码
        String ctx = request.getContextPath();
    %>

    而下面那一种是在浏览器执行时,将 一个已经确定的字符串赋存到 js的window内。

    <script type="text/javascript" >
    <!-- 
       CTX = '${pageContext.request.contextPath}';
       
       // 注意!!这里会发生两次变化,第一次是服务器处理EL表达式。
       // 之后将处理后的代码发送给浏览器,这时这个值已经是死的并不是一个变量了。
       // 实际你审查html,你会看到如下代码。(最后js写的不标准,未定义就直接用了)
       CTX = '/demo';
    //-->
    </script>

    再之后 你其他的js文件里就可以通过CTX设置获取项目目录。
    至于Ajax 里 还是 ${ctx},这说明你这个js是写到html文件里的。
    如果是引用外部script那${ctx}就不能用了。

    2019-07-17 18:59:47
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载