1.静态导入时将被导入页面的代码完全融入,两个页面融合成一个整体的servlet,而动态导入是则是在servlet中使用include的方法来引入被导入页面的内容给!
2.静态导入时被导入页面的指令会起作用,而动态导入时被导入页面的编译指令则失去作用,只是导入body内容!
静态导入 include编译指令语法:<%@include file="relativeURLSpec"%>
动态导入 jsp:include动作指令语法:<jsp:include page="{relativeURL|<%=expression%>}" flush="true"/>
<!---------------------------------------------------------------------->
include指令<%@include file=""%>,这种方式的引入属于静态导入,include行为<jsp:include>,这种方式的导入属于动态的导入,这里涉及到一个jsp的原理上的问题。现在就先回顾一下:
当我在地址栏中输入一个jsp的地址的时候,点击回车,会提交一个请求给我的web容器(如:tomcat,resin)等,这个容器会把这个以jsp结尾的请求对应到一个jsp引擎(其实也是一个servlet)来处理,这个servlet一定会去先把要回应请求的jsp转义成为servlet(此时 include指令被解释执行),然后,把这个servlet编译为class文件,由虚拟机解释执行,处理用户的请求(此时include行为执行),然后再生成响应。
所以说,静态导入是在转译时发生的,是代码级的导入,这个指令的作用就是让jsp引擎去按照这个指令去做一些事情。而include动作是在请求处理阶段发生的,也就是说,include动作会产生两个servlet,两者之间可以传参数,引入的是处理后的结果。
现在知道了原理,那么在编程的时候到底会产生什么样的效果呢?
举个例子就知道了:
比如说我有一个根据股票的行情随时改变的一个servlet(这个servlet会去从某个数据源取得变化的数据),这个servlet需要显示到我的主页的一个角上,每10秒钟更新一次信息,这是很正常的需求。大家都知道静态导入的优点是速度相对于动态导入的速度快。如果我用静态导入的方法,导入这个 servlet的话,会生成一个class文件,这个class文件,当我第二次请求的时候,由于是静态导入,jsp引擎不会去检查我的导入文件的最新时间,而是直接用已经生成的class响应请求。而动态导入的时候,每次去请求的时候,都会去比较导入文件的最新更新的时间,如果这个文件修改过,则会重新生成新的class文件,再去响应请求。也就是说,动态导入之所以速度上要慢,是由于要多做一个判断,对比导入文件的最新时间。我一直只这么认为的,结果今天做了个试验,推盘了我的结论,其实无论动态导入还是静态导入都会去检查生的jsp的更新时间与生成的servlet更新时间的早晚,根据比较结果来决定是否重新生成。而动态导入和静态导入的本质区别就在于,动态导入之所以叫做动态是由于它的参数是动态传递的,这样就可以使程序更加的灵活,而且它的参数本身还可以是动态的也就是说参数可以是脚本。而静态的则没有这项特权。而且,动态导入可以是一个.do的请求,而静态导入不能够。
因此,得出结论,静态导入适合导入不会变化的资源,例如一个html文件,而动态导入适合导入一个时常变化的资源,如servelt和jsp。
- 浏览: 59347 次
- 性别:
- 来自: 南京
最新评论
-
diyulangke:
简单的demo,正常运行,
lucene简单例子 -
wbj0110:
SmartChineseAnalyzer 用lucene4.3 ...
lucene简单例子 -
斑马斑斑:
怎么报错呢
lucene简单例子 -
qq510219366:
tzhz 写道 写的真好,<action name=&q ...
struts2.3.8+spring3.2.1+mybatis3.2.0 -
tzhz:
写的真好,<action name="use ...
struts2.3.8+spring3.2.1+mybatis3.2.0
相关推荐
JSP 中 Include 指令静态导入和动态导入的区别详解 JSP 中的 Include 指令可以实现静态导入和动态导入两种方式。静态导入和动态导入是 JSP 中 Include 指令的两种不同的实现方式,它们之间有着明显的区别。 静态...
JSP中的include指令有两种方式:静态导入和动态导入。了解它们之间的区别,对于开发高效且易于维护的Web应用至关重要。 首先,我们要了解什么是静态导入。在JSP中,静态导入是通过指令%@include file=...
`include`指令有两种形式:静态导入和动态导入,它们在处理和执行时有所不同。 1. **静态导入** 静态导入是通过`<%@include file="relativeURLSpec"%>`指令来完成的。当JSP编译器遇到静态导入指令时,它会将指定的...
欧柏泰克:Java包的静态导入import static和import的区别 Java中的静态导入是Java 5中引入的一项新特性,允许开发者在编写代码时更方便地使用静态方法和成员变量。下面我们来详细地了解Java中的静态导入和普通导入...
在Java编程语言中,静态导入(static import)是一种特殊的导入方式,它允许程序员直接使用类中的静态成员,而无需每次都指定类名。这种特性在2004年发布的Java 5.0版本中引入,目的是为了提高代码的可读性和简洁性...
首先,我们需要理解静态导入与动态导入的区别。在Android中,动态导入通常通过System.loadLibrary()方法完成,而静态导入则是在AndroidManifest.xml中声明,使得应用启动时自动加载。静态导入的优势在于,即使未在...
《静态数据导入工具dataload详解》 在信息技术领域,数据导入是日常工作中不可或缺的一部分,尤其对于实施顾问来说,高效、安全地导入静态档案至关重要。本文将深入探讨一款名为“dataload”的静态数据导入工具,它...
JSP静态导入(JSP指令标记include) JSP页面第一次被请求时,会被JSP引擎转译成Servlet的Java文件,然后再被编译成字节码文件执行。JSP指令标记为JSP页面转译提供整个页面的相关信息。 include指令用于在JSP页面...
Java语言在不断发展,为了提高代码的可读性和简洁性,引入了静态导入(static import)这一特性。在Java 5中,静态导入允许开发者在不指定类名的情况下直接使用类中的静态成员,如静态变量和静态方法。这使得代码...
通过上述分析可以看出,合理使用静态导入可以极大地简化代码,提高开发效率。同时,熟练掌握集合框架中的各种数据结构及其操作方法对于编写高效、灵活的Java程序至关重要。希望本文能够帮助读者更好地理解和应用这些...
从JDK5.0之后,import语句不仅可以导入类,还增加了导入静态方法和静态域的功能。例如,如果在源文件的顶部,添加一条指令: Java代码 import java.lang.System.*; 那么就可以使用System类的静态方法和...
本话题关注的是如何处理DLL动态库,特别是如何生成静态导入库以及对DLL进行改名后生成相应的导入库。 首先,我们要理解“DLL函数导入静态库”是什么。静态库(.lib)文件是与编译器链接时直接嵌入到目标代码中的库...
1. **静态导入(Static Import)**:在Java 5中引入的静态导入允许开发者直接引用类的静态成员,而无需指定类名。以前,我们需要写`Math.random()`,现在可以通过`import static java.lang.Math.random;`,然后直接...
### JavaScript 实现动态导入 JS 与 CSS 等静态资源文件的方法 在现代 Web 开发中,动态地加载脚本和样式表是非常常见的需求。这不仅有助于提高网站性能(例如,按需加载资源),还能增强用户体验(例如,在特定...
20-集合(静态导入).avi
在电路设计和仿真中,了解和掌握村田电容的静态模型和动态模型对于优化电路性能至关重要。 首先,我们要明确什么是电容的模型。电容模型是对真实电容在电路中的行为的一种数学描述,它包括了电容的基本电学特性,如...
创建动态库的步骤与静态库类似,主要区别在于选择“动态库”模板,其他配置基本一致。生成的将是.dll文件和对应的.lib导入库文件。 使用这些库时,你需要将库文件(.lib或.dll)和对应的头文件包含到你的项目中: ...
在现代软件开发中,为了代码复用和模块化设计,经常会用到静态链接库和动态链接库这两种形式的库。静态链接库在编译时期与应用程序链接,而动态链接库则在运行时期加载。 首先,我们来谈谈静态链接库。创建静态库的...