`
jianlai2007
  • 浏览: 8662 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类
最新评论

动态导入与静态导入

 
阅读更多
JSP的动态导入和静态导入:

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。
分享到:
评论

相关推荐

    jsp中include指令静态导入和动态导入的区别详解.docx

    JSP 中 Include 指令静态导入和动态导入的区别详解 JSP 中的 Include 指令可以实现静态导入和动态导入两种方式。静态导入和动态导入是 JSP 中 Include 指令的两种不同的实现方式,它们之间有着明显的区别。 静态...

    JSP静态导入与动态导入使用详解

    动态导入与静态导入的不同之处在于,被包含的文件的语法和逻辑是独立于当前页面的,它会被单独编译,然后在当前页面执行时将运行结果传递给客户端。这种方式更灵活,因为可以通过param子标记传递参数给被包含页面。...

    jsp中include指令静态导入和动态导入的区别详解

    与静态导入不同,动态导入不是在编译时将被包含页面的内容嵌入主页面,而是在请求处理时动态地将被包含页面的body内容插入到主页面。动态导入不会导入被包含页面的编译指令,这样就避免了编译冲突的问题。另外,动态...

    JSP中include指令静态导入和动态导入的区别.pdf

    与静态导入不同,动态导入在运行时完成,它不会将被导入页面的编译指令合并到主页面中,而是仅在请求处理阶段将被导入页面的`&lt;jsp:body&gt;`部分插入到当前页面。动态导入更灵活,因为它是运行时的行为,所以它可以响应...

    javascript实现动态导入js与css等静态资源文件的方法.docx

    动态导入静态资源文件主要通过创建新的 `&lt;script&gt;` 或 `&lt;link&gt;` 元素,并将其插入到文档的 `&lt;head&gt;` 部分来实现。这种方法的优点是灵活性高,可以根据需要动态地控制资源的加载时间。此外,还可以利用回调函数来监控...

    vite5+vue3+ import.meta.glob动态导入vue组件

    而 `import.meta.glob` 是 Vite 提供的一个强大特性,用于动态导入资源,尤其是适用于处理 Vue 组件的动态导入。 `import.meta.glob` 是 Vite 的一个元信息对象,它可以用来动态导入项目中的所有匹配指定模式的文件...

    静态数据导入工具dataload

    在信息技术领域,数据导入是日常工作中不可或缺的一部分,尤其对于实施顾问来说,高效、安全地导入静态档案至关重要。本文将深入探讨一款名为“dataload”的静态数据导入工具,它利用模拟键盘操作的机制,为用户提供...

    Qt静态库与动态库创建与演示

    本教程将深入探讨如何在Windows XP环境下,利用Qt 4和MinGW编译器创建和使用静态库与动态库。 首先,让我们理解静态库和动态库的基本概念。静态库(.lib文件)是将库函数编译到目标代码中,形成一个完整的可执行...

    javascript实现动态导入js与css等静态资源文件的方法

    在JavaScript中,动态导入js和css等静态资源文件是一种提高页面加载效率的策略。它允许我们在需要时才加载相应的资源,而不是一次性加载所有文件。这有助于优化用户体验,尤其是在处理大型项目或按需加载功能时。...

    Java的静态导入源代码

    在Java编程语言中,静态导入(static import)是一种特殊的导入方式,它允许程序员直接使用类中的静态成员,而无需每次都指定类名。这种特性在2004年发布的Java 5.0版本中引入,目的是为了提高代码的可读性和简洁性...

    静态变量的导入以及集合的运用

    本文将详细介绍如何导入静态变量,并深入探讨集合类的使用方法及其实例。 #### 一、静态变量的导入 静态变量(也称为类变量)是在类的生命周期内共享的所有对象的值,即所有对象共用同一份数据。通过`static`...

    静态导入so库文件

    首先,我们需要理解静态导入与动态导入的区别。在Android中,动态导入通常通过System.loadLibrary()方法完成,而静态导入则是在AndroidManifest.xml中声明,使得应用启动时自动加载。静态导入的优势在于,即使未在...

    村田电容静态模型和动态模型

    在静态模型中,村田电容主要被简化为一个理想电容与一个串联的ESR组成。这个模型假设电容对频率变化不敏感,只考虑了电容的储能作用和电阻引起的能量损耗。在设计稳压电源、滤波器等低频电路时,静态模型足够使用。 ...

    vite+vue3动态模块化导入并使用pinia

    在"vite+vue3动态模块化导入并使用pinia"的项目中,我们可以通过以下步骤实现动态模块化导入和使用Pinia: 1. **配置Vite**:在`vite.config.js`中,我们需要配置Vue3和Pinia的插件,如`@vitejs/plugin-vue`和`vite...

    DLLimpLibTool-DLL函数导入静态库生成改名等工具集

    本话题关注的是如何处理DLL动态库,特别是如何生成静态导入库以及对DLL进行改名后生成相应的导入库。 首先,我们要理解“DLL函数导入静态库”是什么。静态库(.lib)文件是与编译器链接时直接嵌入到目标代码中的库...

    C++动态库与静态库的比较

    C++编程中,库是将一组相关函数和数据组织在一起的机制,分为静态库和动态库两种主要形式。本文将详细探讨这两种库的区别以及它们在实际应用中的作用。 首先,让我们了解一下`lib`文件和`dll`文件。`lib`文件(静态...

    MFC DLL动态调用及静态调用

    1. 创建MFC DLL项目:与动态调用相同,但在项目设置中选择“Use MFC in a Static Library”。 2. 导出函数:同样需要在DLL头文件中声明导出函数。 3. 链接DLL:在主程序的链接器设置中,添加DLL项目的输出库文件。...

    欧柏泰克:Java包的静态导入import static和import的区别

    欧柏泰克:Java包的静态导入import static和import的区别 Java中的静态导入是Java 5中引入的一项新特性,允许开发者在编写代码时更方便地使用静态方法和成员变量。下面我们来详细地了解Java中的静态导入和普通导入...

Global site tag (gtag.js) - Google Analytics