JSP之靜態include指令、動態Include指令


(一)使用靜態include指令

<%@ page language="java" contentType="text/html; charset=gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%@include file="scriptlet.jsp" %>
</body>
</html>

(二)使用動態Include指令

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<jsp:include page="scriptlet.jsp" />
</body>
</html>

scriptlet.jsp頁面代碼如下:

<%@ page language="java" contentType="text/html; charset=gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
out.write("來自scriptlet.jsp");
%>
</body>
</html>

(三)靜態導入和動態導入的區別:

(1)靜態導入(include指令)通過file屬性指定被包含的文件,並且file屬性不支持任何表達式;動態導入(include動作)通過page屬性指定被包含的文件,且page屬性支持JSP表達式;

(2)使用靜態導入(include指令)時,被包含的文件內容會原封不動的插入到包含頁中,然后JSP編譯器再將合成后的文件最終編譯成一個Java文件;使用動態導入(include動作)包含文件時,當該標識被執行時,程序會將請求轉發(不是請求重定向)到被包含的頁面,並將執行結果輸出到瀏覽器中,然后返回包含頁繼續執行后面的代碼。因為服務器執行的是多個文件,所以JSP編譯器會分別對這些文件進行編譯;

(3)使用include指令包含文件時,由於被包含的文件最終會生成一個文件,所以在被包含、包含文件中不能有重名的變量或方法;而include動作包含文件時,由於每個文件是單獨編譯的,所以在被包含文件和包含文件中重名的變量和方法是不相沖突的。

(4)靜態導入是將被導入頁面的代碼完全融入,兩個頁面融合成一個整體Servlet,因此被導入頁面甚至不需要是一個完整的頁面;而動態導入則在Servlet中使用include方法來引入被導入頁面的內容;

(5)靜態導入時被導入頁面的編譯指令會起作用;而動態導入時被導入頁面的編譯指令則失去作用,只是插入被導入頁面的body內容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM