include 指令与动作
include 指令使您可以在 JSP 转换为 Servlet 时将一个文件包含进来。
语法如下所示,两种用法:
<%@ include file=" " %>
<jsp:include page=" " flush="true" />Code language: HTML, XML (xml)
执行时间上的区别
<%@ include file="relativeURI" %>是在翻译阶段执行。<jsp:include page="relativeURI" flush="true" />在请求处理阶段执行。
<%@ include file="..." %> 是 JSP 的 include 指令元素,读入指定页面的内容,并把这些内容和本来的页面融合到一起。这个过程是在翻译阶段(也就是 JSP 被转化成 Servlet 的阶段)进行的,引入静态文本(html、jsp),在 JSP 页面被转化成 Servlet 之前和它融合到一起。
<jsp:include page="..." flush="true" /> 引入执行页面或 Servlet 所生成的应答文本。
静态与动态包含
<%@ include file="..." %>为静态的。<jsp:include page="..." flush="true" />为动态的。
动态 include 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。静态 include 用 include 伪码实现,不会检查所含文件的变化,适用于包含静态页面。
通常当应用程序中所有的页面的某些部分(例如标题、页脚和导航栏)都相同的时候,我们就可以考虑用 include。
URL 通常相对于指向它的 JSP 页面,但是,普遍使用相对 URL。您可以使用一个斜杠 / 作为 URL 的开始来告知系统 URL 相对于 Web server 的主路径。被包含的文件将以规则的 JSP 形式来解析,因此,您可以在其中使用静态 HTML、scripting elements、Directives 和 actions。
示例代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="source.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@ include file="head.html" %>
<jsp:include page="source.jsp" flush="true" />
</body>
</html>Code language: HTML, XML (xml)
解析后的 Servlet 代码
最后生成的 Java 文件是下面这个样子的:
out.write("<body>\r\n");
out.write(" ");
out.write("22222222222222");
out.write('\r');
out.write('\n');
out.write(' ');
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "source.jsp", out, true);
out.write(" \r\n");
out.write("</body>\r\n");Code language: PHP (php)