JSP页面中包含文件
在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页面中包含文件的更多相关文章
- 分别应用include指令和include动作标识在一个jsp页面中包含一个文件。
分别应用include指令和include动作标识在一个jsp页面中包含一个文件. hello.jsp <%@ page language="java" import=&qu ...
- 在一个JSP页面中包含另一个JSP页面的三种方式
转载自://http://blog.163.com/neu_lxb/blog/static/179417010201121343132918/ (1)include指令 includ ...
- jsp页面中引入文件路径问题的解决方案(使用request获取项目路径)【原创】
在项目页面中,总会引入一些js和css,相对路径or绝对路径的选择就显得至关重要了!下面是项目中遇到的问题和解决方案,做一下记录! 环境: myEclipse创建工程,使用jsp+css+js,项目目 ...
- JSP页面中的指令标识
JSP页面中的指令标识 制作人:全心全意 指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何内容输出到网页中.也就是说,指令标识对于客户端浏览器是不可见的 ...
- 在一个jsp页面中引用另一个jsp文件的路径的问题
为了提高代码的重用性,经常需要在一个jsp页面中引用另一个jsp文件的代码.关于引用时的路径的问题.下面只介绍动态引用的,我觉得静态引用的应该也一样. 相对路径: 一.在同一个文件夹下,a.jsp中引 ...
- js文件需要jsp页面中的div时,此js文件必须在div之后才能获得值,否则获取不到
js文件需要jsp页面中的div时,此js文件必须在div之后才能获得值,否则获取不到 2.图2的内容为directionkey.js的内容
- jsp页面中jstl标签详解
JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL ...
- 【转】jsp页面中jstl标签详解
原文地址: JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实 ...
- JSP页面静态包含和动态包含的区别与联系
---恢复内容开始--- JSP页面静态包含和动态包含的区别与联系: 1.<%@ include file=" " %> 是指令元素,<jsp:include p ...
随机推荐
- linux内核源码阅读之facebook硬盘加速flashcache之五
正常流程到flashcache_map的1623行或1625行,按顺序先看读流程: 1221static void 1222flashcache_read(struct cache_c *dmc, s ...
- arduino循迹小车
int MotorRight1=14; int MotorRight2=15; int MotorLeft1=16; int MotorLeft2=17; int MotorRPWM=3; int M ...
- JAVA基础 (二)反射 深入解析反射机制
在谈论到反射这个问题时,你是否有例如以下疑问? 不管是在.NET还是Java中反射的原理和机制是一样的,理解了一种还有一种就能够迎刃而解,想要理解反射首先须要了解底层的一些概念和执行.理解了反射有助于 ...
- Android采用HttpClient下载图片
在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片 HttpURLConnection与HttpClient的差别: HttpClient ...
- Android TextView drawableLeft 在代码中实现
方法1 Drawable drawable= getResources().getDrawable(R.drawable.drawable); /// 这一步必须要做,否则不会显示. drawable ...
- Windows消息大全
最近在写TabControl的用户控件,需要用到sendMessage,已做备份. 引用:http://bbs.aau.cn/forum.php?mod=viewthread&tid=7776 ...
- Ninject简介(转)
1.为什么要用Ninject? Ninject是一个IOC容器用来解决程序中组件的耦合问题,它的目的在于做到最少配置.其他的的IOC工具过于依赖配置文件,需要使用assembly-qualified名 ...
- Android sdk + PhoneGap 配置
最近在学习这方面. 安卓sdk(下载地址百度谷歌即可) . 最新版的安卓sdk 自带ADT(基于eclipse) 开发工具 所以 我们不需要另外下载 eclipse 即可开始开发. 安卓个版本ap ...
- JavaScript之Style属性学习
当CSS使用伪类开始侵入DOM和JavaSCript所控制着的行为层时,DOM和JavaScript也使用他们的一系列样式去控制表现层,这篇随笔主要说的就是利用JavaScript去控制元素的表现形式 ...
- socketio 握手前中断报错
前两天折腾了下socketio,部署完发现通过nginx代理之后前端的socket无法和后端通信了,于是暴查一通,最后解决问题: location / { proxy_pass http://127. ...