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。
- 浏览: 56928 次
- 性别:
- 来自: 南京
最新评论
-
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指令静态导入和动态导入的区别详解.docx
主要介绍了jsp中include指令静态导入和动态导入的区别,通过示例和图文讲解可以更好的看出他们的区别,需要的朋友可以参考下
JSP中include指令静态导入和动态导入的区别.pdf 学习资料 复习资料 教学资源
JSP静态导入(JSP指令标记include) JSP页面第一次被请求时,会被JSP引擎转译成Servlet的Java文件,然后再被编译成字节码文件执行。JSP指令标记为JSP页面转译提供整个页面的相关信息。 include指令用于在JSP页面...
短小精悍,关于静态导入的源代码,可以用作编程参照!
模拟键盘操作软件,先把需导入的资料编写好,然后就……,非常适合实施顾问导入静态档案。模拟键盘操作,不是直接导入数据库,避免了不可预见的损失!!
从JDK5.0之后,import语句不仅可以导入类,还增加了导入静态方法和静态域的功能。例如,如果在源文件的顶部,添加一条指令: Java代码 import java.lang.System.*; 那么就可以使用System类的静态方法和...
javascript实现动态导入js与css等静态资源文件的方法.docx
Java包的静态导入import static和import的区别
Android Studio下开发导入第三方so库文件示例demo,用最简单的代码实现完整导入so库文件并调用native方法。
20-集合(静态导入).avi
C++静态库和动态库的导入导出demo
静态变量的导入以及集合的运用,以及综合实例。
超全面javaweb教程第7天-_11_静态导入
视频教程,介绍java的静态导入方法,还介绍了JAVA的编译器的语法设置。
Xcode 3.2.6下将静态库源代码导入项目
小程序静态商城导入即可显示.zip微信小程序模板源码纯前端静态小程序源码导入就可显示小程序静态商城导入即可显示.zip微信小程序模板源码纯前端静态小程序源码导入就可显示 1.学生做毕业设计用 2.程序员学习研究用 3...
压缩包内包含两个文件夹curl_静态库和curl_动态库,内容说明...lib子目录包含动态库的导入库文件libcurl.lib curl_动态库下面: bin子目录包含curl.exe include子目录包含头文件 lib子目录包含静态库libcurl_a.lib