JSP include指令与动作的 相应时间对比

首先是要加载的页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>include动作与指令的差别</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><%=request.getParameter("name")%>你好,欢迎你访问!</body>
</html>

然后是include指令:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'includeAction1.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>下面输出的数据是使用动作指令动态加载的另一个页面的内容<hr><jsp:include page="hello.jsp"/><hr></body>
</html>

动作:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>include 指令与动作的差别</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body>以下是hello1.jsp页面的内容:<hr><jsp:include page="hello1.jsp"><jsp:param name="name" value="QQ"/></jsp:include></body>
</html>

注意hello1.jsp 与hello.jsp 调整加载试试

include 指令与动作的区别:

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,但这些页面可以是其他资源所产生的 结果。服务器按照正常的方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面。服务器以通常的方式运行被包含的页面,将产生的输出放到主页面中,这种方式与RequestDispatcher类的include方法一致。它的优点是在被包含的页面发生更改时,无须对主页面做出修改。它的缺点是所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造。

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

其中参数设置可以没有,如果没有参数设置,则必须采用<jsp:includepage="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代码,比如响应报头的设置和字段、方法的定义。

ref:http://blog.csdn.net/szwangdf/article/details/33336777

JSP include指令与动作的 相应时间对比相关推荐

  1. Jsp Include指令 与动作区别

    在说include指令和动作之前,我们先来了解下 jsp的生命周期. jsp生命周期 分为5个阶段 解析 servle容器检查页面语法 翻译将jsp编译成servlet源文件 编译 servlet容器 ...

  2. JSP include指令

    JSP include指令与jsp:include动作元素区别 JSP include指令 JSP include 指令用于通知 JSP 引擎在翻译当前 JSP 页面时,将其他文件中的内容合并进当前 ...

  3. jsp include指令元素

    前言 被包含页面最大的作用就是代码复用. 除此之外,不应该有其他的任何用处.即使一个.jsp文件的内容再多,也不应该分成好几个.jsp文件,因为这样会造成内容分散,查找起来麻烦. 从包含内容的作用划分 ...

  4. jsp中include指令和动作的区别

    1.include指令是编译阶段的指令,又称为文件加载指令被插入的文件必须保证插入后形成的新文件符合JSP页面的语法规则. nclude可以在JSP页面转换成Servlet之前,将JSP代码插入其中. ...

  5. JSP include指令和include动作的区别

    include指令 JSP可以通过include指令来包含其他文件.被包含的文件可以是JSP文件.HTML文件或文本文件.包含的文件就好像是该JSP文件的一部分,会被同时编译执行. Include指令 ...

  6. 20080823-jsp中include指令与动作的不同

    一.include 指令 格式: <%@include file="文件的绝对路径或者相对路径"%> file属性:指定被包含的文件,是必添属性.该属性不支持任何表达式 ...

  7. include指令与动作的区别【贴心,简洁】

    虽然include和include动作都能够包含一个文件,但他们之间有很大的区别,具体如下: include动作要引入的资源和当前JSP页面是两个彼此独立的执行实体.而include指令只能引入遵循J ...

  8. JSP include指令(静态包含和动态包含)

    文章目录 前言 一.include指令是什么? 二.静态包含和动态包含 2.1 语法格式 2.2 过程 2.2.1静态包含过程 2.2.1动态包含过程 三.两者的主要区别 前言 JSP全称Java S ...

  9. jsp include指令标签

    假设须要在JSP页面内某处总体嵌入一个文件,就能够考虑使用这个指令标签. 该指令标签例如以下: <%@ include file ="文件的名字"%> 该指令标签的作用 ...

最新文章

  1. linux字符设备驱动架构,linux驱动开发--字符设备:cdd_cdev结构中private_data使用
  2. Spring4.x新特性
  3. python库文档的错误_自己编程中遇到的Python错误和解决方法汇总整理
  4. L2正则没有想象那么好?可能是“权重尺度偏移”惹的祸
  5. Azure SQL的DTU和eDTU到底是个什么鬼
  6. JS中的Replace方法
  7. 设计模式--抽象工厂(个人笔记)
  8. centos mysql 5.5 art_Linux CentOS6.5下编译安装MySQL 5.5.51''''
  9. springboot配置多项目下统一切换不同环境变量profile办法
  10. php密码安全检测,php – 密码安全随机字符串函数
  11. 车脸检测 Adaboost 检测过程
  12. 荣耀play4t pro、荣耀x10、华为nova6,哪一个更值得买?
  13. [文摘20070930]每个人都需要掌握的18个人情世故
  14. java伪唤醒,谈谈JDK线程的伪唤醒
  15. python爬取网易云歌词
  16. 商业计划书-智能导盲仗
  17. 数学公式快速计算方法
  18. 用Python给娃送上一份猪年春节礼物。文末源码!
  19. java版怎么安装mod_java – 如何在Mac OS X上安装mod_jk
  20. Rockland 艾美捷丨TrueBlot链霉亲和素磁珠

热门文章

  1. 谷歌向员工开战!“模范员工”遭解雇,被多次非法审讯、施压
  2. Redis数据库下载安装
  3. 三星Galaxy A52新鲜上市,点亮你的个性生活
  4. 什么是跳板机(堡垒机)
  5. 比亚迪半导体终止IPO:​曾计划募资27亿 红杉小米是股东
  6. 深度学习框架tensorflow二实战(训练一个简单二分类模型)
  7. Qt分割条splitter,画出来比写代码方便
  8. WriteUp--HCTF “php竟如此简单”“影子系统”
  9. 你知道漫画脸怎么生成的吗
  10. LIO-PPF:通过增量平面预拟合和跟踪的快速激光雷达惯导里程计