参考:http://developer.51cto.com/art/200902/111134.htm
简单总结一下:
准备知识:
1.翻译阶段
jsp容器负责将jsp页面转化成servlet(*.jsp-->*_jsp.java.称为jsp页面实现类:JSP Page implementation class),并编译这个servlet(*_jsp.java-->*_jsp.class)
2.请求处理阶段
调用jsp页面实现类以处理每个请求并产生应答
<%@ include file="*.jsp" %>
引入的jsp在宿主jsp的翻译阶段,与宿主jsp合成了一个*_jsp.java文件;
此时宿主jsp还未编译。
<jsp:include page="" flush="true"/>
引入的jsp与宿主jsp分开翻译,转化成两个不同的*_jsp.java文件;
直到宿主jsp编译后运行时,才会引入。
文章中有些语焉不详之处,经过测试,注意以下几点:
1.include file 引入的页面,其代码原封不动的插在引入的位置,所以jsp中定义的path,basepath只能保留一组,否则会提示重复定义;
jsp:include 引入页面,是在运行时把编译后的结果插入进来,不会出现上述问题。
2.形象一点,include file 好像是把两个页面合并在一起然后同一编译,所以在引入页面有效的request对象,引入之后,仍然能够被宿主jsp访问;
jsp:include则是分开编译,所以request对象无法共享。
3.include file 是静态插入,只在第一次引入时编译一次,如果后来发生了变化,在页面上无法及时的显示出来;
jsp:include是动态引入,jsp容易会监视引入页面的变化,及时将改变反映到页面上来。
可见二者各有所长啊。
分享到:
- 2009-11-13 18:56
- 浏览 1189
- 评论(0)
- 论坛回复 / 浏览 (0 / 1596)
- 查看更多
相关推荐
<%@ include file="menu.jsp" %> ``` 这种方式提高了效率,因为不需要每次都重新计算包含的文件,但它缺乏动态性。 在性能方面,由于`<jsp:include>` 在运行时处理,如果包含的页面执行了复杂的逻辑,那么这可能...
nt test</title></head><body>This content is statically in the main JSP file. <jsp:include page="included.html"/></body></html>]]>)正如你所见,清单2使用了传统的`<%@include file="..."%>`伪指令来包含...
JSP 中的 Include 有两种用法,分别是 `<%@ include file=” ”%>` 和 `<jsp:include page=” ” flush=”true”/>`。这两种用法都可以用于引入其他 JSP 文件,但是它们之间存在着一些关键的区别。 首先,让我们...
<%@ include file="header.jsp" %> ``` 在这个例子中,`header.jsp`的内容会被直接插入到当前页面的这个位置,形成一个完整的静态页面。 2. 动态嵌入子页面 动态嵌入则是通过`<jsp:include>`标签实现的,这允许在...
`<%@ include file="..."%>` 是一个JSP指令,它在编译时(页面转换为Servlet时)静态地将一个文件的内容插入到JSP页面中。这意味着被包含的页面只会被包含一次,除非JSP文件重新编译。例如: ```jsp <%@ include ...
%@ include file=” ”%> < jsp:include page=” ” flush=”true”/> 前者是指令元素、后者是行为元素。具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看到它都会想到的问题。下面一起来...
在JSP中有两种不同的`include`用法:`<%@ include file="..." %>` 和 `<jsp:include page="..." flush="true"/>`。这两种方式虽然都可以达到将一个页面包含进另一个页面的效果,但它们在执行时间和引入内容方面存在...
<jsp:include page="file-url|<%=expression%>" flush="true" /> ``` `flush`属性默认为`false`,当设置为`true`时,表示在包含之前清空缓冲区。同样,`jsp:param`可用于传递参数: ```html <jsp:include ...
用jsp:include动作实现 <jsp include page=”included.jsp” flush>它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。 静态INCLUDE 用include伪码实现,定不会检查所含文件的变化,...
静态导入使用的语法是:`%@include file="relativeURLSpec"%`。在静态导入中,被包含的页面的编译指令也会被包含进来。例如,在 include1.jsp 中,我们使用静态导入将 error.jsp 文件包含进来。 在 Tomcat 下运行该...
<%@ include file="filename.jsp" %> ``` 这里,"filename.jsp"是被包含的文件名。这种方式的包含是在JSP转换为Servlet时进行的,因此被包含的文件在编译时就已确定。 然后是动态包含,通过`<jsp:include>`动作实现...
<%@ include file="/WEB-INF/header.jsp" %> <!-- 主体内容 --> ... <%@ include file="/WEB-INF/footer.jsp" %> ``` #### 三、`jsp:include`与`<%@ include %>`的比较 通常情况下,`jsp:include`比`<%@ include...
1. **编译与运行时的区别**:`<%@ include file="% %>`在编译时执行,而`<jsp:include>`在运行时执行,这决定了它们在性能和灵活性上的不同表现。 2. **数据流管理**:使用`<jsp:include>`时,需要注意被包含页面...
; charset=gb2312"%> <head><title>聆音博客-失败提示</title></head> <tr><td colspan="2"><jsp:include page="view... <tr ><td colspan="2"><%@ include file="view/AdminEnd.jsp" %></td></tr> </html>
静态包含使用`<%@ include file="要包含的文件" %>`语法进行定义。在JSP页面被编译成Servlet之前,服务器会将被包含的文件内容插入到包含页面中相应的位置,形成一个新的整体页面。这意味着在编译阶段,被包含的文件...
这与JSP指令`<%@ include file="..." %>`不同,后者在JSP转换为Servlet时静态地包含文件。`jsp:include`允许一定的灵活性,但不支持包含包含一般JSP代码的文件。例如,以下代码展示了如何在网页中插入多个新闻条目:...
第二种方法是使用`<%@ include file="..." %>`指令,这在编译时就将被包含的页面内容合并到当前页面中,效率相对较高。 2. **jsp:forward 指令** `jspSyntax_forward.jsp`则演示了`jsp:forward`动作的使用。`<jsp:...
- `<%@ include file="页面地址" %>` 是先将被包含的页面的源代码插入到包含它的页面中,然后再一起编译执行。 #### <jsp:param> 动作元素详解 - **语法**: ```jsp <jsp:param name="name" value="value"/> ``...
包含分为指令`<%@ include file="">`和动作`<jsp:include page="">`。 - **包含指令**: 在JSP转换为Servlet源码之前执行,将JSP代码直接插入到主页面中。这意味着被包含的页面可以影响主页面的整体结构,如...
<%@ include file="header.jsp"%> ``` - **taglib指令**:引入自定义标签库,定义标签前缀和URI。这使得可以使用自定义标签来扩展JSP功能。例如: ```jsp <%@ taglib uri="http://java.sun....