一、静态包含
本文介绍JSP静态包含语句,即使用JSP的include指令来完成的包含操作。
JSP中,有两种包含其它文件的方式,一种是静态包含,一种是动态包含。本文介绍其中的静态包含。
所谓静态包含,跟ASP中的包含是一样的效果,即将所有包含的文件,先静态的包含进来,组成一个大的JSP文件,然后再经过编译器统一编译,生成HTML代码。
JSP静态包含的语句为:
复制代码 代码如下:
%@ include file="file.jsp" %>
这里的file.jsp就是要包含的文件,这里可以使用目录进行包含,可以是相对目录,可以是绝对路径。
JSP静态包含时,需要注意编码的问题。
在JSP文件中,我们必须指定页面的contentType为GBK、GB2312、UTF-8等才能在文档里面输入中文。如下:
复制代码 代码如下:
%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK" %>
但这里务必注意,当这个文件被静态包含时,它的编码如果跟包含它的文件的编码有一点点不一致,都会报错。所以,如果要静态包含,一定要把这两个文件的编码这一句(即contentType)确保完全一致。
二、动态包含
在ASP中没有动态包含这一说法,所有的包含都是静态包含。而JSP中,动态包含和静态包含有很大的区别。
本文来说一说JSP中的动态包含。
JSP中的动态包含不同于静态包含,它是在将各个JSP页面分别编译执行后,将大家执行的HTML结果,组合到一起向客户端浏览器输出的一种方式。
什么意思呢?
比如a.jsp,包含了b.jsp和c.jsp。a.jsp是无法共享b.jsp和c.jsp中设置的变量和函数的,也无法共享其逻辑结构。各自是分别编译并执行的。比如a执行后输出"a",b.jsp执行后输出"b",c.jsp执行后输出"c",那么最终将输出"abc"。
JSP动态包含的语法:
JSP动态包含不是使用的一个指令,而是使用的一个标签,如下:
复制代码 代码如下:
jsp:include page="file.jsp" />
或者:
复制代码 代码如下:
jsp:include page="file.jsp">
jsp:param name="p1" vlaue="v1" />
/jsp:include>
上面两种语句并没有本质的区别,只是前者是一个简单的包含,而后者可以给被包含页面传递参数而已。参数传递到被包含页面时,可以使用request.getParameter("参数名")的方式来获取。
大家知道在asp中,如果使用include包含语句,那么被包含的文件上是不能带参数的。所以,在asp中的包含是跟jsp中的静态包含一样的。