jsp:include 在主页面北请求期间将其他页面的输出包含进来(动态包含)
include指令 不同与上一条,在主页面转化成servlet之前将jsp代码插入进来(静态包含)
jsp:plugin 适用于applet
最愚蠢的方式是在多个页面有共享部分时使用复制张贴的方式,其次采用不同服务器提供的包含机制,最好使用上面3条可移植的方式。
1、可以包含这些内容:HTML页面的内容,纯文本文档内容,JSP页面的输出,servlet的输出。==RequestDispatcher的include方法。
2、语法:<jsp:include page="relative-path-to-resource" />这里的路径可以使用相对与主页面的路径(不加/),相对与应用的根目录(加/),为了防止客户端的非法访问,最 好将被包含页面放在WEB-INF目录。 其中可加flush属性,指定在将那个页面包含进来之前是否应该清空主页面的输出流(默认false)。
3、增加请求参数:被包含页面可以的request对象和主页面共享,不过可在主页面中给北包含页面单独配置一些参数,语法如下:
<jsp:include page="/framents/StandardHeading.jsp">
<jsp:param name="bgColor" value="Yellow" />
</jsp:include>
如果新增参数和客户端提交参数重名,优先使用新增参数。
jsp:include动作 | include指令 | |
包含动作的发生时间 | 请求期间 |
页面转化期间 |
包含的内容 | 页面的输出 | 文件的实际内容 |
产生多少servlet | 两个(主页面和北包含页面都会有独立的servlet) | 一个(北包含文件首先被插入到主页面中,然后,得到的页面北转换成servlet) |
被包含页面是否可设置主页面的响应报头 | 不可以 | 可以 |
被包含页面是否可定义主页面的字段或方法 | 不可以 | 可以 |
被包含页面发生更改时是否需要更新主页面 | 不需要 | 需要 |
等同的servlet代码 | RequestDispatcher的include方法 | 没有 |
相关的规范只要求主页面什么时候发生了改变,并动态更新,所以include指令的方法需要手动touch(在linux系统上)主页面或者在主页面维护一个代表更新时间的注释,显式让服务器更新,而jsp:include方法会自动检测并更新jsp的编译成的servlet。
当然,includ指令,<% include file="……" %>XML兼容语句是:<jsp:directive.include file="……" />。
使用jsp:forward转发请求效果和使用servlet的RequestDispatcher的forward方法一样,不过这种逻辑处理一般建议放在servlet中。