在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. flex4 日期类型字符串转日期类型(string转Date)(转)

    mysql数据库中存储的日期类型通过PHP返回到flex端为字符串类型,这样在flex中进行处理时就必须要将字符串转化为Date类型.如果仅仅是 "年/月/日" 的组合,而没有涉及 ...

  2. Linux-VPN安装配置方法

    VNP服务器IP地址为:192.168.6.6 一.编译安装:   注意:可能需要ppp.libcap.libcap-devel ncurses-devel RPM 包支持,如果没有请安装 libca ...

  3. swig模板下拉框应用

    <div class="form-group"> <label><span class="fa fa-asterisk red"& ...

  4. Java面试题之四

     十六.运行时异常与一般异常有何异同 Java提供了两类主要的异常:runtime exception和checked exception. 1.checked exception:这种异常也就是我们 ...

  5. Mahout源码MeanShiftCanopyDriver分析之二MeanShiftCanopyMapper仿造

    首先更正一点,昨天处理数据的时候是有问题的,直接从网页中拷贝的文件的空格是有问题的,直接拷贝然后新建的文件中的空格可能有一个两个.三个的,所以要把两个或者三个的都换为一个,在InputMapper中下 ...

  6. 假设说这个世界不是真实存在的,仅仅是一段代码,迄今为止你发现了哪些bug?

    给这个世界写代码的不是一个人,而是一个团队(这么大的项目,一个人开发不了).并且严重怀疑这个一个开源项目.开发人员被我们觉得是神,所以一神论是不正确的,众神论才是真理,且凡人是有机会成为神的(參悟神道 ...

  7. XML编程与应用-读取XML

    实例:使用XmlTextReader类的对象读取XML文档 代码如下 using System; using System.Collections.Generic; using System.Linq ...

  8. Javascript知识三

    O(∩_∩)O...今天继续学习了Javascript的知识,下面就总结一下. 数组: 判断是否为数组(instanceof Array) 在JavaScript中,数组不一定是同一类型 var ar ...

  9. 消息处理之performSelector

    performSelector和直接调用方法的区别 performSelector: withObject:是在iOS中的一种方法调用方式.他可以向一个对象传递任何消息,而不需要在编译的时候声明这些方 ...

  10. iOS App集成Apple Pay教程(附示例代码)

    苹果在本周一发布了iOS 8.1版本,并正式开放了Apple Pay支付系统.Apple Pay是一个基于NFC的支付系统,不久将被数以万计的线下零售商店予以支持.即便这项科技并不是彻底的突破性进展, ...