zoukankan      html  css  js  c++  java
  • include指令

    include指令

    CreateTime--2017年8月10日08:40:25

    Author:Marydon

    1.为什么要使用?

      使用include指令可以方便的把在多个页面中要重复显示的内容抽取出来,大大的减少代码的重复量,方便我们对重复内容的维护

    include指令分为:静态include指令和动态include指令

    2.使用静态include指令引入页面

      说明:

        在JSP中插入一个或多个包含文件或代码的文件(jsp,html,inc,txt),把文件插入后与原来的JSP文件合并成一个新的JSP页面

      语法:

        <%@ include file="从页面文件地址" %>

      解说:

        该指令只有一个属性:file,指定被包含的文件地址,一般使用相对路径,并且不支持任何表达式(小脚本、EL表达式)

      举例:

    <%@include file="../../common/patient_baseInfo.jsp"%>

      注意:

        1.1 当从页面的内容发生变化时,主页面和从页面(所有页面)都会被重新编译,即他们是一个整体;

          反之,主页面内容发生更改(手动修改jsp页面而不是通过js控制改变页面内容)时,所有页面也都会被重新编译,即牵一发而动全身,

          从这个角度而言,跟主页面和从页面的内容在同一页面上没有不同;

        1.2 主页面和从页面上声明的Java变量或方法必须具有唯一性;

          jsp会被转化成Java文件,使用静态include指令,多个jsp(从页面)会先合并到主jsp页面上,然后再转换成Java文件,

          如果合并后的页面上有2个及以上相同的变量名或完全一样的方法,这种错误如果在编辑时没有报错,但在将jsp文件转化成Java文件时,仍会报错。

        1.3 这种方式在引入从页面时,不能够传参数给从页面;

    3.使用动态include指令引入页面

      说明:

         在JSP中引用一个或多个包含文件或代码的文件(jsp,html,inc,txt),从页面内容和主页面仍然具有很强的独立性

      语法:

        a.不传参数

        <jsp:include page="<%=request.getParameter("path") %>|path|${param.path }" flush="true|false" />

        b.传递参数    

        <jsp:include page="<%=request.getParameter("path") %>|path|${param.path }" flush="true|false">
          <jsp:param value="参数内容" name="参数名称"/>
          ...可以向包含页面传递多个参数
        </jsp:include>

      解说:

        a.page属性的值可以是死值(具体页面),也可以是小脚本、EL表达式(动态页面);

        b.flush属性表示设置是否在缓冲区满了就将内容输出。可选值有true和false,默认值为true。

      举例:

    <!-- 引入患者医嘱信息页面并传参 -->
    <jsp:include page="../../common/patient_yzInfo.jsp">
        <jsp:param value="zhuYuan" name="treatmentType"/>
    </jsp:include>

      注意:

        2.1 当主页面或从页面内容发生变化时,其他页面不需要重新编译;

          使用动态include指令,主页面和被引入的从页面都会被独立编译,编译成Java文件后,当主页所在的class文件被一行行执行遇到该标识时,

          程序会将请求转发到被包含的页面,并将执行结果输出到浏览器中,然后返回主页面继续执行后面的代码,相当于东拼西凑而形成的页面

        2.2 主页面和从页面上声明的Java变量或方法可以一样;

          由于每个文件是单独编译的,所以在被包含文件和包含文件中重名的变量和方法是不相冲突的。

        2.3 这种方式在引入从页面时,可以向从页面传递一个或多个参数。

          主页向从其中一个页面传递的参数,只有该从页面能获取到该参数,即:从页面之间的参数不共享

    4.图例

      4.1 主页面里分别用了两种不同的方式引入对应的页面

        使用动态include指令引入patient_baseInfo.jsp

        使用静态include指令引入patient_bcInfo.jsp

        common目录中包含这两个文件

       3.2 访问主页面时,产生的编译文件

        使用动态include指令,页面编译结果:

       

        使用静态include指令,页面编译结果:

    5.其他注意事项

      不管是一开始就合并成一个页面的还是最后才拼装成的页面,就最终结果而言,它们都在同一个页面上(即主页面),所以:

      5.1 页面的id要保持唯一性,当主页面与从页面分离时,容易忽略这一点;

      5.2 尽量不要在从页面设置隐藏域,不便于发现,能提取到主页面的就放到主页面,便于维护;

      5.3 由于一个页面对应js只能使用一个window.onload=function(){}函数,所以强制要求,

        主页面的js文件使用window.onload=function(){}函数,其他从页面的js文件使用$(function(){})

      5.4 从页面想要引用的js文件在哪个地方声明引用合适?

      推荐位置:从页面想要引用的js文件,放到主页面来引用,放到最后一个include下面

      举例:

        如果从页面间共用一个js文件,显然,在每个从页面上引用一次不是明智之举,该js文件会被加在多次;

        如果从页面引用的js文件各不相同,从页面上可以直接引用js文件;

        如果从页面想要在主页面加载完毕后执行一些操作,要声明引用的位置,必须是在主页面的body闭合标签上面;

        。。。

    6.常被抽出来的代码

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
    <fmt:requestEncoding value="utf-8" />
    <script type="text/javascript">var baseUrl="<%=request.getContextPath()%>"</script>

    UpdateTime--2018年4月14日16:34:59

    7.引用路径问题  

      在eclipse开发工具下,如果引入的文件路径"../"不小心多加了几个,没有问题,页面不会报错,

      而且在Tomcat下发布可以正常访问到该页面,但是在webLogic下就可能会出现问题了:找不到该页面

      原因:

      在Tomcat下,项目的根路径名称为twrs,即项目该项目外面没有父文件夹,所以就算你多加几个../,依然能够找到该文件;

      但是,在webLogic下发布程序时,twrs的上级目录是data,所以这个时候就去data或data的上级目录下去找这个文件,当然找不到;

      所以,马虎不得,该是几个"../",就写几个。

     相关推荐:

  • 相关阅读:
    SD卡测试
    测试人员可能会遇到的问题
    HDU 1024 Max Sum Plus Plus
    HDU 1176 免费馅饼
    HDU 1257 最少拦截系统
    HDU 1087 Super Jumping! Jumping! Jumping!
    poj 1328 Radar Installation
    poj 1753 Flip Game
    HDU 1003 Max Sum
    HDU 5592 ZYB's Premutation(BestCoder Round #65 C)
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/7338600.html
Copyright © 2011-2022 走看看