include指令是编译阶段的指令,即include所包括的文件的内容是编译的时候插入到JSP文件里,JSP引擎在推断JSP页面未被改动,否则视为已被改动。

因为被包括的文件是在编译时才插入的。因此假设仅仅改动了include文件内容。而没有对JSP改动,得到的结构将不会改变,所以直接运行已经存在的字节码文件。而没有又一次编译。因此对不常常变化的内容,用include指令是合适的,假设须要的内容是常常变化的。则须要动作元素<jsp:include>.以下将具体区分他们之间的不同

1.include指令

    include能够在JSP页面转换成Servlet之前,将JSP代码插入当中。

它的主要长处是功能强大。所包括的代码能够含有整体上影响主页面的JSP构造,比方属性、方法的定义和文档类型的设定。它的缺点是难于维护仅仅要被包括的页面发生更改,就得更改主页面,这是由于主页面不会自己主动地查看被包括的页面是否发生更改。

语法:<%@ include file="sample.jsp" %>

2.include动作

    jsp:include动作是在主页面被请求时,将次级页面的输出包括进来。虽然被包括的页面的输出中不能含有JSP,但这些页面能够是其它资源所产生的 结果。

server依照正常的方式对指向被包括资源的URL进行解释。因而这个URL能够是Servlet或JSP页面。server以通常的方式执行被包括的页面。 将产生的输出放到主页面中,这样的方式与RequestDispatcher类的include方法一致。

它的长处是在被包括的页面发生更改时,无须对主页 面做出改动。它的缺点是所包括的是次级页面的输出,而非次级页面的实际代码,所以在被包括的页面中不能使用不论什么有可能在总体上影响主页面的JSP构造。

语法: <jsp:include page="sample.jsp" flush="true"> <jsp:param name="name" value="value"/> </jsp:include>

当中參数设置能够没有,假设没有參数设置,则必须採用<jsp:include page="sample.jsp" flush="true"/>形式

主要有两个方面的不同;

一:运行时间上:



<%@ include file=”relativeURI”%>                   是在翻译阶段运行

<jsp:include page=”relativeURI” flush=”true” />  在请求处理阶段运行.

二:引入内容的不同:



<%@ include file=”relativeURI”%>

引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.





<jsp:include page=”relativeURI” flush=”true” />引入运行页面或servlet所生成的应答文本.

三: 使用include动作还是include指令?

  使用include指令,假设被包括的文件发生改变,那么,用到它的全部Jsp页面都须要更新。

  仅当include动作不能满足要求时,我们才应该使用include指令。

  有 些开发者觉得include指令生成的代码运行起来比使用include动作的代码更快。

虽然原则上由可能的确如此。但性能上的差异非常小,以致难以測 量,同一时候。include动作在维护上的优势十分巨大,当两种方法都能够使用时,include动作差点儿肯定是首选的方法。

  对于文件包括。应该尽可能地使用include动作。仅在所包括的文件里定义了主页面要用到的字段或方法,或所包括的文件设置了主页面的响应报头时,才应该使用include指令。

既然include指令产生难以维护的代码,为什么人们还要使用它呢?

  由于include指令更为强大。include指令同意所包括的文件里含有影响主页面的Jsp代码。比方响应报头的设置和字段、方法的定义。


样例://subpage.jsp

<%! int num=0; %>

//mainpage.jsp

<html>

 <body>

  <%@ include file="subpage.jsp" %>

  <%= num %>

 </body>

</html>

当然使用include动作时这是不可能的,由于num变量没有定义。主页面不能成功的转换成servlet。

[JSP]JSP中include指令和include动作的差别的更多相关文章

  1. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  2. 分别应用include指令和include动作标识在一个jsp页面中包含一个文件。

    分别应用include指令和include动作标识在一个jsp页面中包含一个文件. hello.jsp <%@ page language="java" import=&qu ...

  3. 牛客网Java刷题知识点之什么是JSP的3大常用指令、JSP的6大哪些动作、JSP中include指令和include动作有什么区别

    不多说,直接上干货! JSP的3大常用指令 包含指令(Include directive):用来包含文件和合并文件内容到当前的页面. 页面指令(Page directive):用来定义JSP页面中特定 ...

  4. include 指令和 include 动作引入 jsp 页面时中文乱码

    include指令:<%@ include file="new.jsp" %> include动作:<jsp:include page="new.jsp ...

  5. JSP -- include指令与include动作的区别

    JSP -- include指令与include动作的区别 (1)格式的区别: include指令:<%@include file = "文件名"%> include动 ...

  6. 【Head First Servlets and JSP】笔记24:include指令与include动作 & param动作 & foward动作

    include指令与include动作 1.样例代码 <%@ page contentType="text/html;charset=UTF-8" language=&quo ...

  7. JavaWeb学习----JSP脚本元素、指令元素、动作元素

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. JSP脚本元素、指令元素、动作元素

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. 2017.9.18 include指令和include动作有什么区别?

    问题:include指令和include动作有什么区别? 答:include指令合并静态文档或Jsp页面中的内容,可以用于包括动态生成的输出结果,因此可以包含一个Servlet include指令在编 ...

  10. include指令和include动作有什么区别?

    include指令         称为文件加载指令,可以将其他的文件插入jsp网页,被插入的文件必须保证插入后形成的新文件符合jsp页面的语法规则. include指令语法格式:<%@incl ...

随机推荐

  1. 2018用IDEA搭建SSM框架(Spring+SpringMVC+Mybatis)

    使用IDEA搭建ssm框架 环境 工具:IDEA 2018.1 jdk版本:jdk1.8.0_171 Maven版本:apache-maven-3.5.3 Tomcat版本:apache-tomcat ...

  2. kube-ui安装

    kube-ui是k8s提供的web管理界面,可以展示节点的内存.CPU.磁盘.Pod.RC.SVC等信息. 1.编辑kube-dashboard-rc.yml定义文件[root@kubernetes- ...

  3. Python 面向对象编程——类定义与对象

    <类定义与对象声明> 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对 ...

  4. wmware虚拟系统光盘的问题

    拿到系统盘,需要通过UltralSO工具中:工具-制作光盘映像文件,做成系统iso文件,而不是直接拷贝系统盘里的文件压缩成iso格式. 主要原因:主要是系统盘有一个引导区,win系统复制光盘时,是不能 ...

  5. CentOS7.4 关闭firewall防火墙,改用iptables

    1.关闭默认的firewall防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service ...

  6. BZOJ.3498.[PA2009]Cakes(三元环 枚举)

    题目链接 感觉我可能学的假的(复杂度没问题,但是常数巨大). 一个比较真的说明见这儿:https://czyhe.me/blog/algorithm/3-mem-ring/3-mem-ring/. \ ...

  7. 【漏洞预警】Intel爆CPU设计问题,导致win和Linux内核重设计(附测试poc)

    目前研究人员正抓紧检查 Linux 内核的安全问题,与此同时,微软也预计将在本月补丁日公开介绍 Windows 操作系统的相关变更. 而 Linux 和 Windows 系统的这些更新势必会对 Int ...

  8. [JOISC2014]水筒

    OJ题号: BZOJ4242.AtCoder-JOISC2014E 题目大意: 给你一个h*w的网格图,每个格子可能是空地.障碍物和建筑物. 你只可以从空地上走过或者从建筑物中穿过. 建筑物总共有p个 ...

  9. Codeforces Round #296 (Div. 1) B. Clique Problem 贪心

    B. Clique Problem time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  10. mysql+mycat分片环境部署

    说明: 1.操作系统:64位CentOS Linux release 7.2.1511 (Core) 2.jdk版本:1.8.0_121 3.mysql版本: 5.7.17 4.两台mysql服务器: ...