1、什么是静态导入?

静态导入指的是,将一个外部文件嵌入到当前JSP文件中,同时解析这个页面的JSP语句,它会把目标页面的其他编译指令也包含进来。
include的静态导入指令使用语法:


静态导入使用范例include1.jsp:




静态include范例

其中error.jsp是一个简单的错误处理页面,代码如下:




错误提示页
这是一个错误处理页面

在tomcat下运行该静态include范例后,查看生成的servlet类可看到如下代码段

(查看方式:windows下,找到tomcat安装目录下的work文件夹,进入Catalina文件夹下的localhost文件夹,找到当前项目所在的文件夹,找到org目录,进入其下的apache目录下的jsp文件夹,即可看到一个include1_jsp.java文件,这就是该include1.jsp对应生成的servlet类。ps:我是把这个测试页面放在webDemo下的,所以我的目录是\apache-tomcat-7.0.47\work\Catalina\localhost\webDemo\org\apache\jsp)

从方框中即可看出静态导入是:包含页面在编译时将完全包含被包含页面的代码。需要指出的是,静态导入还会将被包含页面的编译指令也包含进来,如果两个页面的编译指令有冲突,那么页面就会出错。


2、什么是动态导入

动态导入是不会导入include页面的编译指令的,而是仅仅将被导入页面的body内容插入本页面。
动态导入的语法格式:

或者

flush属性用语指定输出缓存是否转移到被导入文件中。如果指定为true,则包含在被导入文件中,如果指定为false,则包含在原文件中,对于JSP1.1旧版本,只能设置为false。
对于第二种语法格式,则可在被导入页面中加入额外的请求参数。

动态导入范例:

我们将上面的include1.jsp代码静态导入改为动态导入




静态include范例

编译后查看生成的servlet代码,可以看到如下段:

红色方框中代码显示出,动态导入只是使用了一个include方法来插入目标页面的内容,而不是将目标页面完全融入到本页面中。
归纳起来,静态导入和动态导入有如下三点区别:

1、静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则在Servlet中使用include方法来引入被导入页面的内容。
2、静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。
3、动态导入还可以增加额外的参数。即如下代码方式:

jsp中include指令静态导入和动态导入的区别详解的更多相关文章

  1. ios8 – iOS 8上的ptrace

    我试图在ptrace上调用一个像thisptrace一样的函数;但是当我尝试使用#include导入它时,Xcode会给我一个错误’sys/ptrace.h’文件找不到.我错过了什么,我是否需要导入一个库,或者这在iOS上根本不可用?

  2. 在编译时编译Xcode中的C类错误:stl vector

    我有一个C类,用gcc和可视化工作室中的寡妇在linux上编译.boid.h:并在boid.cpp中:但是,当我在Xcode中编译此代码时,我收到以下错误:有任何想法吗?我以为你可以使用C/C++代码并在Xcode中编译没有问题?.m文件被视为具有Objective-C扩展名的.c文件..mm文件被视为具有Objective-C扩展名的.cpp文件,那么它被称为Objective-C只需将.m文件重命名为.mm,右键单击或按住Ctrl键并在Xcode中的文件中选择重命名.

  3. 如何从Haxe创建iOS-和OSX-库并在本机应用程序中使用它?

    我有一个在Haxe上编写自己的协议,数据结构和逻辑的跨平台实现.如何在iOS和OSX的企业应用程序中构建和使用它?

  4. Swift调用C语言自建函数库的方法

    本程序示范了如何用Swift调用自定义C语言模块的方法。简介示范程序中有一个C语言的源程序CSwift.C和一个头文件CSwift.h,我们的目标是构造一个CSwift的函数库,能够让swift源程序执行CSwift程序中的函数。快速上手本程序需要Swift3.0以上版本。下载、编译和测试源程序采用C语言写成,测试程序则是Swift语言编写。因此如果通过测试,则恭喜您,已经成功实现了Swift语言调用C语言的整个过程。这种做法主要是为了能够在同一个项目中用Swift去测试C语言的模块。

  5. 在Swift Xcode项目中使用LLVM C API

    我试图在用Swift编写的Xcode项目中使用LLVMCAPI.为此,我松散地遵循指南here,但遇到了麻烦.在编译步骤中,在Xcode中添加包含路径到构建设置后,我收到以下错误:幻灯片的下一步是添加标志:但我不确定在构建设置中将它们放在哪里–将它们添加到’其他C标志’或’其他Swift标志’选项似乎没有做任何事情.我该怎么做呢?

  6. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  7. android – UnsatisfiedLInkError使用NDK链接到FFMPEG

    我使用bambuser的文件编译了FFMPEGforandroid.编译运行正常.没有错误.我还确保在build.sh中更改包名称.但是,一旦我尝试链接到文件,手机就会抛出UnsatisfiedLinkError.这是Androkd.mk文件:Video.c很简单:相应的Java代码也很简单:但我得到这个错误:我尝试用Java手动加载预构建的共享库(bambuser文件)(使用System.loa

  8. 如何在android.mk文件中指定c头文件

    我有一个ac源文件夹名称“clib”,在那里,我有一些示例文件,如1.h,1.c,2.h,2.c,3.c,3.h和外面那个文件夹我有4.h,4.c,4_jni.h,4_jni.c现在构建“.so”我创建了我的android.mk这样的东西这里4.h包含1.h文件所以我真正的问题是,当我试图构建.so文件时,它给了我一个像这样的错误致命错误:1.h:没有这样的文件或目录如果我从4.h中移除1.h,一切都很好,但我有一个大的c库具有相同类型的文件夹结构,并且一些.h文件包含很少的marcos定义…

  9. android – layout“include”功能不支持layout_gravity属性?

    似乎layout_margin也不支持.这是view1.xml布局解决方法两年后,这个bug仍然存在!尽管标签应该支持所有android:layout_*属性,但android:layout_gravity属性不是.我目前使用的工作是以编程方式设置布局边距,如下所示:或者作为父级的FrameLayout,例如:编辑:我还发现android:layout_gravity属性适用于include标签,因为它有layout_width和layout_height标签!

  10. android-studio – 无法使用Android Studio从JNI打印日志消息

    我得到的错误:error:undefinedreferenceto‘__android_log_print’我已将此行添加到我的.cpp文件中:我尝试过两种方法:__android_log_print和__android_log_write我还在我的Android.mk文件(我手动编译)中链接了日志库.LOCAL_LDLIBS:=–llog我也尝试了几种我认为的替代品:这是我的Android.mk

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部