`

include指令与include动作区别.

阅读更多
<jsp:include page=""/> 
<%@ include file="" %>
这两个的区别已经被人问过很多次..

https://www.ibm.com/developerworks/cn/java/j-jsp04293/
https://www.ibm.com/developerworks/cn/java/j-jsp04153/
引用
flush 属性

您可能已注意到 jsp:include 代码示例中的 flush 属性。顾名思义, flush 指示在读入包含内容之前是否清空任何现有的缓冲区。JSP 1.1 中需要 flush 属性,因此,如果代码中不用它,会得到一个错误。但是,在 JSP 1.2 中, flush 属性缺省为 false。由于清空大多数时候不是一个重要的问题,因此,我的建议是:对于 JSP 1.1,将 flush 设置为 true;而对于 JSP 1.2 及更高版本,将其设置为关闭。


引用
jsp:include 是如何工作的

如果您有点爱刨根问底,那么可能十分想知道 jsp:include 标记的行为为什么与 include 伪指令不同。道理其实十分简单: jsp:include 包含的是所包含 URI 的 响应,而不是 URI 本身。这意味着:对所指出的 URI 进行 解释,因而包含的是 生成的响应。如果页面是 HTML,那么将得到一点也没有变化的 HTML。但是,如果是 Perl 脚本、Java servlet 或者 CGI 程序,那么得到的将是从该程序解释而得的结果。虽然页面通常就是 HTML,但实际程序恰好是达到目的的手段。而且,由于每次请求页面的时候都会进行解释,因此从来不会象使用 include 伪指令时那样高速缓存结果。虽然这只是很小的变动,但它却导致了您所见到的行为中的全部差异。


----------------------------------------------------------------
理解两者发生的时期,得先理解下JSP的生命周期
JSP生命周期:
转换:JSP文件-->SERVLET文件
编译:SERVLET文件-->CLASS文件
----(这两个也可以合并为翻译阶段)
装载:将类文件装载到内存中
创建:创建一个SERVLET实例对象
初始化:调用jspInit()方法,最终也就是调用servlet中的init方法
服务:调用_jspService()方法,最终调用servlet中的service方法
销毁:调用jspDestroy()方法,最终调用servlet类的destroy()方法

-------------------------------------------------------
included.jsp被包含文件   includepage.jsp使用指令文件   includeaction.jsp使用动作文件
include指令,included文件先被包含到includepage中,再去转换.
被包含页面的内容解析发生在编译时期.
最后只是生成java文件与class文件各一个.includepage_jsp.java和includepage_jsp.class
包含页面一经编译内容就不会再改变,如果要改变,就得重新编译JSP文件


而include动作,被包含文件与包含文件各自独立转换.会生成四个文件.
在包含文件中,使用
 org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "included.jsp", out, true);

在运行时再引用被包含文件的内容.
就是说被包含页面的内容解析发生在运行时期.内容也可以随时改变.

-------------------------------------------------------------
再总结下:
@include 解析工作发生在编译时期.一旦编译内容就不再改变,除非重新编译
:inlcude 发生在运行时期.内容随时可以改变.不需再编译.
1
0
分享到:
评论

相关推荐

    jsp中两种包含关系(include动作和include指令)的区别

    在JavaServer Pages (JSP) 技术中,存在两种包含关系:`&lt;jsp:include&gt;` 动作和 `jsp:include` 指令。它们都是用来将一个页面的内容插入到另一个页面中的,但它们的工作方式和适用场景有所不同。 **1. `&lt;jsp:include...

    JSP:include和include指令区别

    在JavaServer Pages (JSP) 技术中,`&lt;jsp:include&gt;` 和 `&lt;%@ include %&gt;` 是两个用于页面组合的指令,它们虽然都用于将一个或多个文件的内容插入到主页面中,但它们的工作机制和使用场景有所不同。理解这两者的区别...

    JSP中include指令和include行为的区别

     jsp:include page=” ” flush=”true”/&gt; 前者是指令元素、后者是行为元素。具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看到它都会想到的问题。下面一起来看看吧。 通常当应用程序中所有的...

    Java Web应用开发 14 课堂案例-使用include动作.docx

    本案例旨在教授如何使用`jsp:include`动作,并对比其与`&lt;jsp:include&gt;`指令的区别。下面将详细阐述`jsp:include`动作的使用方法以及它与`include`指令的差异。 ### `jsp:include`动作的基本语法和用法 `jsp:...

    JSP的include指令的使用方法

    如果被包含的页面内容需要频繁更改,或者希望被包含的部分可以独立修改而不影响主页面,则建议使用JSP的include动作(`&lt;jsp:include&gt;`)或者引入Java Servlet技术,因为动作或Servlet可以实现在运行时动态地包含内容...

    JSP中include指令静态导入和动态导入的区别.pdf

    动态导入则使用`&lt;jsp:include&gt;`动作元素,语法为`&lt;jsp:include page="{relativeURL|&lt;%=expression%&gt;}" flush="true/false"&gt;`。与静态导入不同,动态导入在运行时完成,它不会将被导入页面的编译指令合并到主页面中...

    JSP指令和动作熟悉

    本篇将详细介绍JSP中的`page`指令,以及`include`指令与相关动作`&lt;jsp:include&gt;`, `&lt;jsp:forward&gt;`, `&lt;jsp:fallback&gt;`, `&lt;jsp:plugin&gt;`。 首先,`page`指令是JSP中最高级别的指令,它用于定义整个JSP页面的属性。`...

    JSP指令与动作熟悉

    实验目的:掌握3种脚本、page和include指令、&lt;jsp:include&gt;和动作。 实验内容: 1. 编写一个页面片段top.jspf,作用是显示网站名称和日期(服务器时间)。显示内容如下: 作业3网站 今天是:2014-02-28 2. 编写一个...

    实验2 JSP指令标记与JSP动作标记(3.20)

    **include指令** - **定义**: `include`指令用于静态地包含其他资源的内容。 - **语法**: ```jsp &lt;%@ include file="relativePath" %&gt; ``` - **实验应用**: - 在`first.jsp`、`third.jsp`和`second.jsp`中分别...

    C++中#include、#pragma的含义

    `#pragma` 指令是 C++ 中的一种预处理指令,用于设定编译器的状态或者是指示编译器完成一些特定的动作。`#pragma` 指令可以影响编译器的行为,例如指定编译器的警告级别、优化级别等。 `#pragma` 指令可以有多种...

    JSP动作和指令.ppt

    **JSP 指令详解** JSP 指令(Directive)是JSP页面中的预定义元素,用于向JSP容器提供元数据信息。它们以`开头,`%&gt;`结尾,...在实际应用中,合理运用这些指令和动作元素,能够提高代码的可读性和复用性,简化开发流程。

    jsp:include与include实探

    首先,`jsp:include`是JSP标准动作标签,其语法格式为: ```jsp &lt;jsp:include page="relativeUrl" flush="true|false" /&gt; ``` 这里的`page`属性指定要包含的资源路径,可以是相对URL或者绝对URL。`flush`属性默认为`...

    jsp中include指令静态导入和动态导入的区别详解

    在JavaServer Pages(JSP)技术中,页面之间的内容包含是常见需求,这可以通过include指令实现。JSP中的include指令有两种方式:静态导入和动态导入。了解它们之间的区别,对于开发高效且易于维护的Web应用至关重要...

    实验2_Jsp语法 -页面基本结构、指令标记和动作标记

    实验旨在使参与者能够熟练掌握如何在JSP页面中嵌入成员变量、Java程序片段及表达式,同时深入了解`&lt;%@ page %&gt;`, `&lt;%@ include %&gt;`等指令标记与`&lt;jsp:include&gt;`、`&lt;jsp:forward&gt;`等动作标记的应用场景与技巧。...

    jsp的常用指令有哪些(编译指令 动作指令整理).docx

    Include指令 **功能描述**: - 用于静态地包含一个文件到当前JSP页面中。 - 被包含的文件可以在编译阶段合并到主JSP页面中。 **语法**: ```jsp &lt;%@ include file="relativeURLSpec" %&gt; ``` - `file`属性指定要...

    实验2 JSP动作标记.pdf )

    这与在HTML中使用iframe标签或者在JSP页面中使用静态的include指令不同,后者是在页面被翻译为Servlet之前,将内容静态地包含进来。使用include动作标记可以传递参数,通过param子标记可以向被包含的页面传递参数值...

    JSP 的脚本,指令,动作

    1. **&lt;jsp:include ...&gt;**:与包含指令相似,但在编译时更灵活,可以动态地决定要包含哪个页面。 2. **&lt;jsp:forward ...&gt;**:用于将请求转发到另一个页面,这在页面跳转和业务流程控制中非常有用。 3. **...

    include 详析

    ### JSP的Include指令详解 #### `&lt;%@ include file="% %&gt;` 这种形式的`include`指令是在编译阶段执行的。当JSP页面被请求时,服务器会先读取该指令,并将指定的文件内容合并到当前JSP页面中,然后将整个合并后的...

    Jsp脚本元素指令以及动作课后作业

    - **Include指令:** 包含其他文件,可以是在编译时或运行时包含。 - **Taglib指令:** 指定要使用的标签库的位置和前缀。 **4. JSP的标准动作包括哪些?这些标准动作能完成什么功能?** - **jsp:include:** 在...

Global site tag (gtag.js) - Google Analytics