<%@include file="/public/head.jsp" %>
这个是静态包含
先合并,再翻译为servlet.
一般用在
开发一个页面(jsp,html), 头部页面为公共页面,其他页面引入头部页面 <jsp:include page="/public/head.jsp>
这个是动态包含
先编译,再合并
包含页面与被包含页面各自翻译、编译,再在运行时候合并在一起显示现在很少这么使用了,楼主可以不用管这个知识点

解决方案 »

  1.   

    <%@ include file=”header.html”%>
     引入的页面可以只包含静态内容(例如HTML),也可以是一个普通的JSP页面。主页面和引入的页面融和在一起(引入的页面只是最为普通的文本进行融合,并不对动态内容求值),融合后的完整页面再被整体的转换为一个servlet。<jsp:include page=”navigation.jsp”/>
     这个指令是在请求处理阶段而不是在翻译阶段执行的。该行为并不是要引入指定页面的实际内容,它将引入执行该引入页面后所产生的应答,这意味着你可以指定任何能够产生文本应答的web资源。JSP容器将通过一个内部的函数调用来调用指定的资源。因此,这些被引入的资源可以帮助处理原来的请求,所以这些资源可以访问请求作用域内的所有对象,以及所有的请求参数。但是要注意,它不能访问任何页面作用域属性,或是在主页面中声明的脚步变量。<jsp:include>元素允许你包含动态文件和静态,这两种包含文件的结果是不同的。如果文件仅是静态文件,那么这种包含仅仅是把包含文件的内容加到jsp文件中去,而如果这个文件动态的,那么这个被包含文件也会被Jsp编译器执行(这一切与asp相似)你不能从文件名上判断一个文件是动态的还是静态的,比如aspcn.asp 就有可能只是包含一些信息而已,而不需要执行。<jsp:include>能够同时处理这两种文件,因此你就不需要包含时还要判断此文件是动态的还是静态的.简单的说法就是
    <%@ include file=”header.html”%>引入静态页面:直接把文件内容读进来,不做任何处理
    <jsp:include page=”navigation.jsp”/>读入一个jsp文件最好生成的内容,而不是jsp文件本身。
      

  2.   

    初学者的理解是这样的。
    我们不去想什么内部的各种处理原理,就把网页当做纯java程序读。
    假设abc.jsp这个页面中同时包含着<%@ include file="head.jsp"%>和<jsp:include page="head.jsp"/>这两个语句。
    我们在读abc.jsp这个页面的时候,读到<%@ include file="head.jsp"%>的时候,是将head.jsp中内容复制(我也不知道是复制还是截切,就当复制好了)到abc.jsp这个页面成为abc.jsp的一部分在执行;
    而在读到<jsp:include page="head.jsp"/>的时候,则是转到head.jsp去执行,head执行完后将结果返回,这个过程就好像是java中的方法调用。