<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 发生在运行时期.内容随时可以改变.不需再编译.
分享到:
相关推荐
在JavaServer Pages (JSP) 技术中,存在两种包含关系:`<jsp:include>` 动作和 `jsp:include` 指令。它们都是用来将一个页面的内容插入到另一个页面中的,但它们的工作方式和适用场景有所不同。 **1. `<jsp:include...
在JavaServer Pages (JSP) 技术中,`<jsp:include>` 和 `<%@ include %>` 是两个用于页面组合的指令,它们虽然都用于将一个或多个文件的内容插入到主页面中,但它们的工作机制和使用场景有所不同。理解这两者的区别...
jsp:include page=” ” flush=”true”/> 前者是指令元素、后者是行为元素。具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看到它都会想到的问题。下面一起来看看吧。 通常当应用程序中所有的...
本案例旨在教授如何使用`jsp:include`动作,并对比其与`<jsp:include>`指令的区别。下面将详细阐述`jsp:include`动作的使用方法以及它与`include`指令的差异。 ### `jsp:include`动作的基本语法和用法 `jsp:...
如果被包含的页面内容需要频繁更改,或者希望被包含的部分可以独立修改而不影响主页面,则建议使用JSP的include动作(`<jsp:include>`)或者引入Java Servlet技术,因为动作或Servlet可以实现在运行时动态地包含内容...
动态导入则使用`<jsp:include>`动作元素,语法为`<jsp:include page="{relativeURL|<%=expression%>}" flush="true/false">`。与静态导入不同,动态导入在运行时完成,它不会将被导入页面的编译指令合并到主页面中...
本篇将详细介绍JSP中的`page`指令,以及`include`指令与相关动作`<jsp:include>`, `<jsp:forward>`, `<jsp:fallback>`, `<jsp:plugin>`。 首先,`page`指令是JSP中最高级别的指令,它用于定义整个JSP页面的属性。`...
实验目的:掌握3种脚本、page和include指令、<jsp:include>和动作。 实验内容: 1. 编写一个页面片段top.jspf,作用是显示网站名称和日期(服务器时间)。显示内容如下: 作业3网站 今天是:2014-02-28 2. 编写一个...
**include指令** - **定义**: `include`指令用于静态地包含其他资源的内容。 - **语法**: ```jsp <%@ include file="relativePath" %> ``` - **实验应用**: - 在`first.jsp`、`third.jsp`和`second.jsp`中分别...
`#pragma` 指令是 C++ 中的一种预处理指令,用于设定编译器的状态或者是指示编译器完成一些特定的动作。`#pragma` 指令可以影响编译器的行为,例如指定编译器的警告级别、优化级别等。 `#pragma` 指令可以有多种...
**JSP 指令详解** JSP 指令(Directive)是JSP页面中的预定义元素,用于向JSP容器提供元数据信息。它们以`开头,`%>`结尾,...在实际应用中,合理运用这些指令和动作元素,能够提高代码的可读性和复用性,简化开发流程。
首先,`jsp:include`是JSP标准动作标签,其语法格式为: ```jsp <jsp:include page="relativeUrl" flush="true|false" /> ``` 这里的`page`属性指定要包含的资源路径,可以是相对URL或者绝对URL。`flush`属性默认为`...
在JavaServer Pages(JSP)技术中,页面之间的内容包含是常见需求,这可以通过include指令实现。JSP中的include指令有两种方式:静态导入和动态导入。了解它们之间的区别,对于开发高效且易于维护的Web应用至关重要...
实验旨在使参与者能够熟练掌握如何在JSP页面中嵌入成员变量、Java程序片段及表达式,同时深入了解`<%@ page %>`, `<%@ include %>`等指令标记与`<jsp:include>`、`<jsp:forward>`等动作标记的应用场景与技巧。...
Include指令 **功能描述**: - 用于静态地包含一个文件到当前JSP页面中。 - 被包含的文件可以在编译阶段合并到主JSP页面中。 **语法**: ```jsp <%@ include file="relativeURLSpec" %> ``` - `file`属性指定要...
这与在HTML中使用iframe标签或者在JSP页面中使用静态的include指令不同,后者是在页面被翻译为Servlet之前,将内容静态地包含进来。使用include动作标记可以传递参数,通过param子标记可以向被包含的页面传递参数值...
1. **<jsp:include ...>**:与包含指令相似,但在编译时更灵活,可以动态地决定要包含哪个页面。 2. **<jsp:forward ...>**:用于将请求转发到另一个页面,这在页面跳转和业务流程控制中非常有用。 3. **...
### JSP的Include指令详解 #### `<%@ include file="% %>` 这种形式的`include`指令是在编译阶段执行的。当JSP页面被请求时,服务器会先读取该指令,并将指定的文件内容合并到当前JSP页面中,然后将整个合并后的...
- **Include指令:** 包含其他文件,可以是在编译时或运行时包含。 - **Taglib指令:** 指定要使用的标签库的位置和前缀。 **4. JSP的标准动作包括哪些?这些标准动作能完成什么功能?** - **jsp:include:** 在...