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的上级目录下去找这个文件,当然找不到;

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

     相关推荐:

  • 相关阅读:
    [Misc ]bw 注入过程 150
    [Misc]2015 RCTF 日志记录
    [课堂笔记]铁三Linux取证
    [Web] 赛博地球杯 源码泄露
    ROPgadget 工具
    一步一步学ROP之linux x86 学习笔记
    Linux环境崩溃生成core文件以及调试
    文件头文件尾总结
    Linux (x86) Exploit Development Series 阅读笔记level1 Classic Stack Based Buffer Overflow
    Python 进制转换
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/7338600.html
Copyright © 2011-2022 走看看