首页 理论教育JavaWeb应用开发:使用

JavaWeb应用开发:使用

【摘要】:有参数时可以使用动作元素设置参数,语法如下:动作的各属性的含义:pagepage 属性指定一个相对路径,或者是代表相对路径的表达式。flush 的默认值为false。在JSP 1.2 版本之前,flush 必须设为true。例6.5:使用示例。如果一个JSP 页面使用include 指令包含了另一个JSP 页面,最终也只产生一个Servlet 的Java 源文件和一个class 文件。

<jsp:include>动作用于把指定的文件包含到当前JSP 页面中,这种包含方式为动态包含方式。如果包含的是静态文件(如HTML 文件),内容直接包含到<jsp:include>动作所在的位置上;如果包含的是动态文件(如其他的JSP 文件),则把调用所包含JSP网页的输出内容插入到输出的内容中。其语法如下:

使用<jsp:include>动作不仅可以包含其他JSP 或HTML 内容,还可以传递参数。有参数时可以使用<jsp:param>动作元素设置参数,语法如下:

<jsp:include>动作的各属性的含义:

➢ page

page 属性指定一个相对路径,或者是代表相对路径的表达式。如果以“/”开头,那么路径主要参照JSP 应用的上下关系路径。如果路径是以文件名或目录名开头,那么这个路径就是参照当前的JSP 文件路径。

➢ flush

如果页面的输出内容是有缓冲的,flush 属性值决定是否清空缓冲。如果为true,缓冲区满时,将会被清空。flush 的默认值为false。在JSP 1.2 版本之前,flush 必须设为true。

下面通过一个示例说明include 动作的用法。

例6.5:<jsp:include>使用示例。

本例中,在一个JSP 文件(index.jsp)中使用<jsp:include>动作包含一个静态的HTML(top.html)和另一个JSP 文件(include.jsp),各页面代码如下:

index.jsp 的页面代码:

(www.chuimin.cn)

top.html 的页面代码:

include.jsp 的页面代码:

大家看见上面的代码可能会有疑问:为什么HTML 文件和JSP 文件的内容都不合理,比如HTML 文件连<html>标签都没有。这是因为在index.jsp 页面中已经有了<html>这些标签,如果在top.html 和include.jsp 中再包含这些标签,那么使用<jsp:include>动作之后最终页面生成的响应给客户端的HTML 内容就会包含多个<html>等标签,这样反而不合理。以上虽然有三个页面,但是最终响应给客户端的只有一个页面,并且是一个合成的HTML 页面。

运行效果如图6.2 所示。

图6.2 使用<jsp:include>动作

在前面章节中讲解JSP 的页面构成的时候,也介绍了一种include 指令,include 指令与<jsp:include>动作的区别如下:

➢ include 指令和<jsp:include>动作的区别

include 指令标记读入指定页面的内容并把这些内容和原来的页面融合到一起。这个过程发生在JSP 转化成Servlet 的阶段,最终所合成的JSP 文件被Servlet 容器转化成Servlet。如果一个JSP 页面使用include 指令包含了另一个JSP 页面,最终也只产生一个Servlet 的Java 源文件和一个class 文件。

使用<jsp:include>动作包含其他JSP 页面,其本质是调用了被包含文件所转化的Servlet 对象的jspService()方法。也就是说,所被包含的JSP 文件也对应有生成的Servlet 源文件和class 文件。如果一个JSP 页面使用include 动作包含了另一个JSP 页面,一共会产生两个Servlet 源文件和两个class 文件。使用<jsp:include>动作不会将被包含的JSP 文件的代码融入自身中,只是在运行时引入了被包含页面执行后所产生的结果。