zoukankan      html  css  js  c++  java
  • js 放在公共头部 子页面引用js 失效问题

    先回忆一下二者的区别(对于此篇文章而言,二者在用法上没有区别)

     

    jsp:include是先编译一下included.jsp文件,然后再包含        先编译,后包含
    @ include是先把文件包含就来,然后统一编译                   先包含,后编译

    今天下午想把jQuery集成到项目中,发现怎么样都会出问题。原因就是路径问题。

    在集成时,我的思路是写一个公共JSP文件,里面包含一些常用的js文件,当然此处我用的就是Jquery插件了。

    但写完发现单独测试公共JSP是可以使用的,但包含公共JSP页面的页面却始终不能使用JQuery,开始还以为是加载顺序的问题。

    几经测试,终于发现了其中的问题。

     

    由于做的项目文件较多,故文件都不放在一个文件夹下:在公共JSP页面中,有

    <%@ page language="Java" import="java.util.*" pageEncoding="utf-8"%>

    <script type="text/JavaScript" src="js/jquery132min.js"></script>

        <script type="text/javascript">    
        $(function(){
        alert('hello1');
        });
    </script>

     

    在调用它的时候,有:

    <%@ include file="../../common_ext.jsp"%>

    但这样很可能导致错误。

     

    原因是,include之后,公共JSP被加载到自己的JSP,则JQueryr的相对位置已经发生了变化。即公共JSP把JQuery的相对位置传给了自己的JSP,但自己的JSP以自身为标准,通过路径就找不到Jquery插件了。简单地说,就是如果用相对路径,则公共JSP中的路径就应该是相对自己jSP的路径了。

     

    但这样显然失去了它是公共JSP的意义,因此在这里用绝对路径来做:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

    <%
    String tPath = request.getContextPath();
    String tBasePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+tPath+"/";
    %>

    <script type="text/javascript" src="<%=tBasePath%>js/jquery132min.js"></script>
        <script type="text/javascript">
        
        $(function(){
        alert('hello1');
        });
        
        </script>

     

    这样,只要在自己的jSP页面中引入公共JSP就可以了。

  • 相关阅读:
    【Python基础】04_Python中的if判断语句
    【Python基础】03_Python中的命名和关键字
    【Python基础】02_Python中变量的输入输出
    【Python基础】01_Python中的变量
    三、gridView增删改查
    二、MVC3+EF单表增删改查
    一、简单gridview列表展示
    oracle账户密码过期,修改为无限制
    提取年
    如何找到记录的子记录
  • 原文地址:https://www.cnblogs.com/lykbk/p/rdgergrg3456435454.html
Copyright © 2011-2022 走看看