在JSP中,主要有3种功能可以将外部内容包含到JSP文档中jsp:include动作。

jsp:include动作允许我们在请求期间将其他页面的输出包含进来。它的主要优点是:在被包含的页面发生更改时,无需对主页面做出修改。它的主要缺点是:它所包含的是次级页面的输出,而非次级页面的实际代码(include指令),所以,在被包含的页面中不能使用仟何有可能总体上影响主页面的JSP构造。一般说来,它的优点要远远胜过它的缺点,这几乎注定它会比其他包含机制应用得更为普遍。

include指令。include指令可以在主页面转换成servlet之前,将JSP代码插入其中。它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如字段的定义和内容类型的设定。它的主要缺点是难以维护:只要被包含的页面发生更改,就得更新主页面。

jsp:plugin动作。尽管本书主要论述服务器端的Java,但同时也会照顾到客户端java(嵌入web中的applet),因为客户端java在实际应用中也能发挥一定的作用,尤其在公司内部的内联网上。jsp:plugin元素可以将使用java插件(Java Plug-in)的applet插入到ASP页面中。它的主要优点是:能够避免在HTML中编写冗长繁琐且易于出错的OBJECT和EMBER标签。它的主要缺点是;它适用于applet,而applet的应用不太常见。

jsp: include: 语法:<%jsp:include page="/path"%> jsp:include是xml语法中的元素名称。

jsp: include动作在主页面被请求时,将次级页面的输出包含进来。尽管被包含页面的输出中不能含有JSP,但这些页面可以是其他资源(这些资源有可能使用servlet或JSP创建输
出)所产生的结果。也就是说,服务器按照正常的方式对指向被包含资源的URL进行解释,因而,这个UrL可以是servlet或JsP页面。服务器以通常的方式运行被包含的页面,将
产生的输出放入主页面中。这种行为和RequestDispatcber类的include方法完全相同,在servlet希望完成这种类型的文件包含时,就是使用这个方法。

如果要防止包含页面被客户单独访问,可以将它们放在WEB-INF目录或其子目录中.

要注意到:被包含的页面不是完整的Web页面口包含进来的文件可以是HTML文件、纯文本文件、JSP页面、或servlet,如果文件为jSP页面和servlet,则包含进来的只是页面
的输出,不是实际的代码)。但是,任何情况下,客户看到的都是合成后的结果。因此,如果主页面和包含进来的内容中都含有诸如DOCTYPE,BODY等标签,那么,在客户看到的结果中这些标签将会出现两次,这会使得最终的HTML不合法。在用到sexvlet和JSP时,请务必查看生成的HTML源代码,并将URL提交给html验证器,这是一个好习惯。在使用jsp:include时,这个建议甚至更为重要,因为初学者经常错误地将主页面和包含页面都设计成完整的HTML文档。(jsp也是一样的)。

如:

<body>
here is our current news:
<ol>
<li><jsp:include page="/WEB-INF/Item1.html"/>
<li><jsp:include page="/WEB-INF/Item2.html"/>
<li><jsp:include page="/WEB-INF/Item3.html"/>
<li><jsp:include page="/WEB-INF/Item4.jsp"/>
</ol>
</body>

include 指令:

语法:<%@ include file%>

include指令在主JSP文档转换成servlet时(一般在首次被访问时),将文件包含到文档中;

include指令石作是一种预处理,服务器将被包含文件的内容逐字节插入到主页面当中。 然后将产生的页面作为单个jsp处理。因此,Jsp:include和 include 指令根本不同之处在于它们被调的时间:jsp:include在请求期间被激活,而include指令在转换期问被激活。

如:

<body>
Imformation about our products<br>
blabal bla bla;<br>
=====================================<br>
<%@ include file="/WEB-INF/section.jsp" %>
</body>

jsp:forward:

<body>
<% String destination;
if(Math.random()>0.5){
destination="/WEB-INF/section.jsp";
}
else{
destination="/WEB-INF/Item1.html";
}
%>
<jsp:forward page="<%=destination %>"/>
</body>

如果使用jsp:forward,则主页面不能含有任何输出,这就提出一个问题:那么使用JSP又有什么好处呢?答案是:没有任何好处!实际上,使用JSP对于处理这类情况反而不利,因为现实的情形会更复杂,而复杂的代码在servlet中要比在JSP页面中更容易开发和测试。我们推荐完全避免使用jsp :forward.如果您希望执行类似于本示例的任务,请使用servlet,由servlet调用RequestBispatcher的forward方法.

JSP页面中包含文件的更多相关文章

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

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

  2. 在一个JSP页面中包含另一个JSP页面的三种方式

    转载自://http://blog.163.com/neu_lxb/blog/static/179417010201121343132918/ (1)include指令          includ ...

  3. jsp页面中引入文件路径问题的解决方案(使用request获取项目路径)【原创】

    在项目页面中,总会引入一些js和css,相对路径or绝对路径的选择就显得至关重要了!下面是项目中遇到的问题和解决方案,做一下记录! 环境: myEclipse创建工程,使用jsp+css+js,项目目 ...

  4. JSP页面中的指令标识

    JSP页面中的指令标识 制作人:全心全意 指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何内容输出到网页中.也就是说,指令标识对于客户端浏览器是不可见的 ...

  5. 在一个jsp页面中引用另一个jsp文件的路径的问题

    为了提高代码的重用性,经常需要在一个jsp页面中引用另一个jsp文件的代码.关于引用时的路径的问题.下面只介绍动态引用的,我觉得静态引用的应该也一样. 相对路径: 一.在同一个文件夹下,a.jsp中引 ...

  6. js文件需要jsp页面中的div时,此js文件必须在div之后才能获得值,否则获取不到

    js文件需要jsp页面中的div时,此js文件必须在div之后才能获得值,否则获取不到 2.图2的内容为directionkey.js的内容

  7. jsp页面中jstl标签详解

    JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL ...

  8. 【转】jsp页面中jstl标签详解

    原文地址: JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实 ...

  9. JSP页面静态包含和动态包含的区别与联系

    ---恢复内容开始--- JSP页面静态包含和动态包含的区别与联系: 1.<%@ include file=" " %> 是指令元素,<jsp:include p ...

随机推荐

  1. Android中pendingIntent的深入理解

    pendingIntent字面意义:等待的,未决定的Intent.要得到一个pendingIntent对象,使用方法类的静态方法 getActivity(Context, int, Intent, i ...

  2. 计算机原理学习(2)-- 存储器和I/O设备和总线

    前言 前一篇文章介绍了冯诺依曼体系结构的计算机的基本工作原理,其中主要介绍了CPU的结构和工作原理.这一篇主要来介绍存储区,总线,以及IO设备等其他几大组件,来了解整个计算机是如何工作的. 这些东西都 ...

  3. 关于ajax中async参数的感悟

    async,这个参数默认为true. 就是异步去处理信息. 当把它设置为false的时候,就是同步去处理数据了. var current_lead_id = '<?php echo $curre ...

  4. golang仿AS3写的ByteArray

    用golang写了个仿AS3写的ByteArray,稍微有点差别,demo能成功运行,还未进行其他测试 主要参考的是golang自带库里的Buffer,结合了binary 来看看demo: packa ...

  5. 解决android开发webservice的发布与数据库连接的问题

    由于app后续开发的需要,移植了两次webservice和数据库,遇到了不少问题,也花费了很多时间,实践告诉我要学会寻找问题的根源,这样才能在开发中节省时间,尽快解决问题!好,废话不多说,转入正题…… ...

  6. 在线词典php

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. mac pro 设置wifi热点

    系统偏好设置-共享-网络共享(Internet共享)共享来源选择你的网络(非wifi), 以下复选框选wifi,wifi设置里能够设置wifi名字password,注意不能有中文. 设置完,inter ...

  8. 虎扯:纯css3各方向小三角的制作原理分析

    入驻博客园两个月之后的第一篇随笔,希望能够做到三个原则: One:不浪费自己的时间, Tow:不浪费读者的时间, 第三就是希望有缘的朋友们多多指教,共度前端快乐的大坑!!! 咱们今天来做一个居家旅行必 ...

  9. git 使用随笔

    /*将远端库git@github.com:myrepo/base.git从远端clone到本地*/git clone git@github.com:myrepo/base.git /*克隆版本库的时候 ...

  10. 用python 10min手写一个简易的实时内存监控系统

    简易的内存监控系统 本文需要有一定的python和前端基础,如果没基础的,请关注我后续的基础教程系列博客 文章github源地址,还可以看到具体的代码,喜欢请在原链接右上角加个star 腾讯视频链接 ...