JSP静态导入(JSP指令标记include)

JSP页面第一次被请求时,会被JSP引擎转译成Servlet的Java文件,然后再被编译成字节码文件执行。JSP指令标记为JSP页面转译提供整个页面的相关信息。

include指令用于在JSP页面静态插入一个文件,被插入的文件可以是JSP页面、HTML页面、文本文件或一段Java代码。使用了include指令的JSP页面在转换成Java文件时,将被插入的文件在当前JSP页面出来该指令的位置做整体的插入,合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。因此,必须保证插入文件后形成的新的JSP页面符合JSP语法和逻辑规则。include指令的使用格式为:

<%@ include file="文件的URL" %>

插入文件可以使用绝对路径和相对路径,一般要使用相对路径。相对路径是相对于当前页面所在目录的路径,例如,当前网页所在目录是Web服务根目录,被插入的文件在根目录下的text文件中,文件名为head.txt,相对路径的使用格式如下:

<%@ include file="text/head.txt" %>

当被插入的文件被修改后,JSP引擎会重新将当前的JSP页面和修改后的被嵌入的文件合并成一个新的JSP页面,然后转译、编译成新的Java字节文件供客户访问。

使用include指令可以实现代码的复用,提高代码的使用效率。例如,页面一般都需要一个标题栏、导航栏、页脚等,用户可以将标题栏等写成单独的文件,每个JSP页面都可以在适当的位置用include指令插入标题栏、导航栏、页脚等文件,这样就极大地提高了代码的复用和效率,使代码更便于修改。

值得注意的是,被插入的文件是文本文件时需注意在文件的开始部分指明文件的相关信息,这样方便JSP页面和被嵌入的文件合并生成一个新的JSP页面不至于出现乱码等问题。例如(head.txt):

<%@ page contentType="text/html;charset=GB2312"%>
<h1> ..头部信息..</h1>
<div> ... </div>

JSP动态导入(jsp:include动作标记)

include动作标记用来在JSP页面中动态包含一个文件,如果被包含的页面是JSP页面,则先处理之后再将结果包含,而如果包含的是非*.jsp文件,则只是把文件内容静态包含进来。包含页面程序与被包含页面程序是彼此独立的,互补影响。jsp:include标记的一般使用格式为:

<jsp:include page="文件的URL" />
或
<jsp:include page="文件的URL"><jsp:param 子标记/>
</jsp:include>

JSP动态导入与静态导入的区别:

1、处理时间和方式不同:include指令标记插入的文件在页面转译时就合并到一起了,被包含文件与当前页面组合而成的新页面必须符合JSP的语法和逻辑规则,由于是提前合并编译,所以执行速度快;而jsp:include动作标记是被包含文件语法和逻辑独立于当前页面,单独被JSP引擎编译,当前页面执行时再将被包含文件的运行结果传送给客户端,由于是执行页面时处理包含文件,所以执行速度慢,但可以利用param子标记传递参数,使用更灵活。

2、适用情况不同:静态导入适合导入不会经常变化的资源例如html文件,而动态导入适合一个时常变化的资源例如JSP文件。

个人博客:学习园

原文地址:http://www.xuexiyuan.cn/article/detail/193.html

JSP静态导入与动态导入相关推荐

  1. jsp静态导入和动态导入

    动态导入:JSP:include仅仅是包含给界面的body 体不管里面有什么东西,统一编译出来被包含进来的界面编译指令会作用消失. 静态导入:@include要包含有该界面的解析的指令.这里面的神马都 ...

  2. Python基础 ( 十 ) —— 面向对象(多态、封装、反射、动态导入)

    #面向对象的三大特性 1 继承(上一章的内容) 2 多态 python本身就是多态的 3 封装 # 多态 #不同类的实例化对象,调用同一个方法(执行的逻辑不同),而不用考虑他们具体的类,例如: 字符对 ...

  3. C++静态库和动态库的导入导出

    文章目录 一.静态库的导入和导出 1.导出静态库 2.导入静态库 二.动态库的导入和导出(函数) 1.导出动态库(函数) 2.导入动态库(函数) 三.动态库的导入和导出(类) 1.导出动态库(类) 2 ...

  4. 如何判别lib文件是静态库还是动态库的导入文件呢

    我么知道lib文件存在两种情况: 一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接 库dynamic link librar ...

  5. jsp中静态include和动态include的区别

    为什么80%的码农都做不了架构师?>>>    (1)静态导入(include指令)通过file属性指定被包含的文件,并且file属性不支持任何表达式:动态导入(include动作) ...

  6. Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...

    ## 多态 ```python OOP中标准解释:多个不同类型对象,可以响应同一个方法,并产生不同结果,即为多态 多态好处:只要知道基类使用方法即可,不需要关心具体哪一个类的对象实现的,以不变应万变, ...

  7. 第二十五章 面向对象------封装、内置函数、反射、动态导入

    1.封装 什么是封装? 1.对外部隐藏内部的属性,以及实现细节,给外部提供使用的接口 注意:封装有隐藏的意思,但不是单纯的隐藏 学习封装的目的:就是为了能够限制外界对内部数据的访问 python中属性 ...

  8. 动态导入ECMAScript模块一文看懂

    import { concat } from './concatModule'使用ES模块的方式是静态的:意味着模块之间的依赖关系在编译时就已经知道了. ECMAScript(又名ES2015或ES) ...

  9. 【Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )

    文章目录 一.修改 7zr 交叉编译脚本 Android.mk 二.完整的 7zr 交叉编译脚本 Android.mk 三.交叉编译 lib7zr.a 静态库 四.Android Studio 导入 ...

最新文章

  1. 1. 编程规范和编程安全指南--python
  2. oracle删除unique key,【PK】Oracle 10g删除主键约束后无法删除唯一约束索引问题的模拟与分析...
  3. avaya http文件服务器,avaya 通讯服务器配置
  4. 64位汇编中的布尔指令
  5. Tomcat BIO . NIO . ARP 配置
  6. java fx 的演进版本_新增非空约束字段在不同版本中的演进
  7. 啊哈C语言 第四章 【代码】【习题答案】
  8. PostgreSQL ALTER TABLE 命令
  9. CAD椭圆怎么画?CAD椭圆绘制步骤
  10. 普通高中信息技术课程标准( 必修 选修科目)
  11. gcc10环境下bwa安装报错的解决方案
  12. html转成高清pdf,Javascript实现html转pdf高清版(提高分辨率)
  13. 道闸雷达感应技术使用,智能感应存在,飞睿科技毫米波雷达
  14. 关于字符串中加入变量的方式
  15. Vue中components与component的区分
  16. 推荐 5 款数据库性能监控软件,附下载
  17. 马斯克放大招!直逼高铁时速的240km h汽车隧道挖成了!
  18. c语言cis,Arithmetic types
  19. 简单模拟-----PAT乙级1001 害死人不偿命的(3n+1)猜想
  20. 【C语言】豪华版_飞机小游戏

热门文章

  1. html5平板电脑,Html5添加支持桌面、移动触摸手机和平板电脑的Lightbox插件教程
  2. linux单网卡多拨Adsl,ROS单线多拨pppoe
  3. web文件怎么传到服务器,web文件传到服务器
  4. sqlwarning mysql_mysql提示[Warning] Invalid (old?) table or database name问题的解决方法
  5. js 判断一个字符在字符串中出现的次数
  6. 前端生态混乱,AMPMIP在努力做标准化工作
  7. 课时28.假链接(掌握)
  8. 一个切图仔的 CSS 笔记
  9. python作业:高级FTP程序
  10. Dashboard集群