JSP动作元素之include

时间:2022-11-25 20:26:52

采用include指令导入的页面输入静态导入,采用<jsp:include…/>指令属于动态导入。

语法格式如下:

<jsp:include page="{relativeURL|<%=expression%>}" flush="true">
<jsp:param name="parameterName" value="patameterValue"/>
</jsp:include>

 

动态导入与静态导入的区别:

静态导入是将被导入的页面的代码完全融入,两个页面融合在一个整天Servlet;而动态导入在Servlet中使用include方法来引入被导入页面的内容.

静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容.

动态包含还可以增加额外的参数

代码实例:

                                                                           <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jsp-include test</title>
</head>
<body>
<jsp:include page="scriptlet.jsp"/>
</body>
</html>

查看此页面生成的Servlet的源代码:

                                                                           out.write("</head>\r\n");
out.write("<body>\r\n");
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response,
"scriptlet.jsp", out, false);
out.write("\r\n");

我们可以看到动态导入只是使用include方法来插入目标内容,而不是将目标页面完全融入本页面中。

include动作指令与forward动作指令十分相似,它们都是采用方法来引入目标页面,通过查看JSP页面所生成Servlet代码可以看出forward指令使用_jspx_page_context的forward()方法来引入目标页面,而include指令则使用通过JspRuntimeLibrary的include()方法来引入目标页面。区别在于,forward时,被forward的页面将完全代替原有页面;而执行include时,被include的页面只是插入原有页面。简而言之:forward拿目标页面代替原有页面,而include则拿目标页面插入原有页面。