静态包含和动态包含
-
静态包含(属于指令)
定义:在jsp编译时插入一个包含文本或者代码的文件(不识别被包含的文件是静态的页面还是动态的页面),这个过程是
静态的,而包含的文件可以是jsp文件,HTML等,先包含,然后再将全部代码一起处理语法:<%@ include file="要包含的文件路径"%>这个是属于指令,属于jsp语法范畴
-
动态包含(属于标签)
定义:使用jsp:include标签,与静态包含不同的是,动态可以自动区分被包含页面是静态的还是动态的,若是静态的,
则和静态包含一样,先包含进来,然后和全部代码一起处理,如果是动态的页面,则可以先进行动态的处理,再
将处理后的结果包含进来注意:不能处理被包含页面含有HTML基本标签的问题
语法: 1)不传递参数:<jsp:include page="{文件路径|<%=表达式%>}" flush="true/false"/> 2)传递参数:<jsp:include page="{文件路径|<%=表达式%>}" flush="true/false"> <jsp:param name="参数名" value="参数值"/> <jsp:param name="参数名" value="参数值"/> </jsp:include>
这个属于标签,标签属于java范畴
Flash 的作用
在同一个 JSP 中,如果不断 include 自己(源文件),在逻辑上会形成死循环。若默认情况下,服务器会等待该文件被读到底端,然后才输出到客户端,并且销毁该次访问的 request 和 response。而当把flush 属性赋为真值时,在缓存累积了一定数据时,服务器会先提供一部分数据给浏览器,并等待后续内容。由此可以得出结论,在简单页面中,该属性不纳入考虑,而在页面包含大量数据时,为缩短客户端延迟,可将一部分内容先行输出。该属性在 Servlet 中也有对应的应用。
-
静态包含与动态包含的区别
共同点:都将被包含页面包含进去
不同点:1)语法不同: 静态包含:<%@ include file="要包含的文件路径"%> 动态包含:1)不传递参数:<jsp:include page="{文件路径|<%=表达式%>}" flash="true/false"/> 2)传递参数:<jsp:include page="{文件路径|<%=表达式%>}" flash="true/false"> <jsp:param name="参数名" value="参数值"/> <jsp:param name="参数名" value="参数值"/> </jsp:include> 2)执行方式不同: 静态包含:不论包含的是静态页面还是动态页面,不区分静态页面还是动态页面,都是先包含然后一起执 行 动态包含:可以自动区分被包含页面是静态的还是动态的,若是静态的,则和静态包含一样,先包含进来, 然后和全部代码一起处理,如果是动态的页面,则可以先进行动态的处理,再将处理后的结果包含进来 3)是否能传参:静态包含不能传参 动态包含:如果包含的是静态页面,则不能传递参数,如果包含的是动态页面,则可以传参 这里的传参是指当前的页面可以传递参数到被包含的动态页面中,这样,被包含的动态页面可以 根据传过去的参数动态的变更页面
-
缺点分析
静态包含的缺点:被包含页面不能有HTML标签,不能重定义
动态包含的缺点:不能有html静态标签