JSP中动态INCLUDE与静态INCLUDE的区别

我已经有了一下答案,但是不理解答案的意思,比如“检查所含文件中的变化”是什么意思?
---------------------------------------------------
答:动态INCLUDE用jsp:include动作实现
<jsp:include page="included.jsp" flush="true" />
它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
<%@ include file="included.htm" %>
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面

动态INCLUDE在使用的时候,会先解析所要包含的页面(你例子中的included.jsp),解析后在和主页面放到一起显示;
静态INCLUDE在使用的时候,不会解析所要包含的页面(你例子中的included.htm),也就是说,不管你的included.htm中有什么,我的任务就是把你包含并显示,其他的一概不管

jsp:include是先编译一下included.jsp文件,然后再包含 先编译,后包含
@ include是先把文件包含就来,然后统一编译 先包含,后编译

个人理解,希望能让你理解
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-30

1、动态包含用的元素是page,而且有两种形式。静态包含用的是file,只有一种形式。

2、生成的文件不同,静态的包含是将两个jsp文件二合一,生成一个以包含页面命名的servlet和class文件,动态包含的两个jsp文件各自生成自己的servlet和class文件。

1、包含的jsp页面与被包含的jsp页面共用一个request内置对象。

2、比如说在客户端访问包含页面时地址栏后面直接加上参数后传递,这种形式的传参是客户端送来的,两个页面都能够访问此参数。我们可以通过这两个页面合成的servlet中可以看到有传递的参数成为servlet的成员变量。

3、包含的jsp页面与被包含的jsp页面最好没有重复的html标签。否则会发生覆盖现象。

本回答被网友采纳
第2个回答  2016-02-21
静态include与动态include的区别分析:
为了更深刻的了解这两者的区别,专门搜索了类似的资料,写出来供大家分享:
静态include主要是对静态页面的引入,不会检查所包含文件的变化
<% @ include file="include.html" %>
动态include主要是对动态页面的引入,它总是会检查所引入的页面的变化,如果所包含的资源在请求间发生变化
,则下一次请求包含<jsp:include>动作的jsp时,将包含资源的新内容。
另一方面,include指令在转换时一次性地将内容复制到jsp中,如果所包含的资源发生变化,则使用include指令的jsp将不能反应出新的内容,除非重新编译该jsp。
<jsp:include>动作包含的属性:
page:指定所包含资源的相对url路径,该资源必须时同一web应用程序的组成部分。
flush:指定在执行include动作后是否应刷新缓冲区,在jsp1.1中,该属性必须设置为真。
使用动态include动作时,根据jsp1.1规范,jsp容器允许判断通过include指令包含的资源是否发生变化。如果发生变化。则容器可以重新编译包含该资源的jsp,然而,该规范并没有提供向容器表明某个包含的资源发生变化的机制。
动态include的优点和不足:
优点:
1:引入和同步一个动态的页面,使jsp页面更具灵活性
2:能和不同页面之间进行信息的交互和快捷的实现方式。
3:改变了原始的所有页面编码都放在一个jsp上,使不同的功能分别写在不同页里,通过动态include方式引用到页面,更易于编码,更易于管理。
不足:
动态的引入时需要频繁的变化和页面信息的更新和交互,要占用大量的资源开销。降低页面的访问速度。如果在没必要动态引入的情况下,不要使用动态include
应该注意事项:
1:<jsp:include>动作的flush属性必须要定义,不定义会出现转换错误。而且设置的flush必须要为true
2:在<jsp:include>动作中指定的页面必须是同一web应用程序的一部分。如果引入的是非同一web应用的页面将导致请求时错误。
第3个回答  2010-12-06
这样理解就行了:静态是讲直接复制源文件代码到当前文件,注意:只有文本
而动态则会去,执行,编译,。。。等操作;例如,导入从数据库读的列表页
第4个回答  2013-02-16
1.静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则是在Servlet中使用include方法来引入被导入页面的内容。
2.静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。
3.动态包含还可以增加额外的参数。