72 include动作和指令的区别

简介: 72 include动作和指令的区别

image.png

<%@include...> 与<jsp:include....>指令的区别

include指令:

在翻译阶段(将JSP页面转换成servlet的阶段),include会读入指定的页面中的内容,并将这些内容和原来的页面融合在一起

  <%@ include file=”header.html”%>

引入的页面可以只包含静态内容(例如HTML),也可以是一个普通的JSP页面。主页面和引入的页面融和在一起(引入的页面只是最为普通的文本进行融合,并不对动态内容求值),融合后的完整页面再被整体的转换为一个servlet。

这意味着主页和被引入的页面共享所有的页面作用域数据。因此,如果主页面中声明了一个变量,而在某个被引入的页面中也声明了一个同名的变量,那么在翻译阶段将会造成一个错误,因为组合后的页面无法进行编译。

include指令的一个常见用法是引入应用程序的所有页面都需要的公共声明。

JSP规范建议在使用include指令引入JSP页面时,最好使用不同的文件扩展名,因为它们一般都不是完整而合法的页面,如:可以使用这些替代的文件扩展名:.jspf或 .jsf。

被引用页面改变后,容器可能不会马上产生反应。

<jsp:include>

指令用于在运行时引入另外的资源。

<jsp:include page=”navigation.jsp”/>

这个指令是在请求处理阶段而不是在翻译阶段执行的。该行为并不是要引入指定页面的实际内容,它将引入执行该引入页面后所产生的应答,这意味着你可以指定任何能够产生文本应答的web资源。JSP容器将通过一个内部的函数调用来调用指定的资源。因此,这些被引入的资源可以帮助处理原来的请求,所以这些资源可以访问请求作用域内的所有对象,以及所有的请求参数。但是要注意,它不能访问任何页面作用域属性,或是在主页面中声明的脚本变量。

<c:import>行为和<jsp:include>相同,另外它还可以从外部资源引入数据,比如不同的web应用程序,或者一个FTPfuwq。

 所以应该使用<c:import>来代替<jsp:include>的使用。

 被引用页面改变后,新版本会立即投入使用。

 include 和<jsp:include>行为直接的区别

 

语法     执行时间     引入内容

<%@ include  File=”relativeURI”%>     翻译阶段     静态文本(HTML、JSP),在JSP页面被转换为servlet之前和他融合在一起

<jsp:include Page=”relativeURI”Flush=”true/false”/>     请求处理阶段     执行页面或servlet所生成的应答文本

       

总结:<%@ include file%>是把引入的文件和当前的文件共同合斌成一个servlet文件进行解析。<JSP:include page>是把当前文件和引入文件生成两个不同的servlet文件,在当前文件中在进行动态的调用引入的servlet文件。

相关文章
|
2月前
|
网络协议 API Windows
MASM32v11编程调用Process32First失败: 程序发出命令,但命令长度不正确
MASM32v11编程调用Process32First失败: 程序发出命令,但命令长度不正确
|
5月前
|
jenkins Java 持续交付
一篇文章讲明白JenkinsPipelinescript指令创建和变量定义
一篇文章讲明白JenkinsPipelinescript指令创建和变量定义
281 0
|
6月前
指令模式
指令模式。
24 1
|
存储 小程序 C语言
条件分支和循环机制、标志寄存器及函数调用机制
条件分支和循环机制、标志寄存器及函数调用机制
96 0
|
缓存 Java
include动作
include动作
107 0
STM32独立按键控制LED亮灭---软键篇(内置代码+注释解析+部分库函数代码)
STM32独立按键控制LED亮灭---软键篇(内置代码+注释解析+部分库函数代码)
621 0
STM32独立按键控制LED亮灭---软键篇(内置代码+注释解析+部分库函数代码)
|
存储 网络协议 C语言
【CSAPP】x86-64的机器代码和原始的C代码差别巨大,一些常在C语言中隐藏的处理器状态
【CSAPP】x86-64的机器代码和原始的C代码差别巨大,一些常在C语言中隐藏的处理器状态
85 0
|
JavaScript 索引
v-for指令的四种使用方式
一、v-for属性 二、四种使用方式代码