1. 程式人生 > >jsp中include 的兩種用法

jsp中include 的兩種用法

1.兩種用法

靜態include:  <%@ inlcude file =”header.jsp” %>

此時引入的是靜態的jsp檔案,它將引入的jsp中的原始碼原封不動地附加到當前檔案中,所以在jsp程式中使用這個指令的時候file裡面的值(即要匯入的檔案)不能帶多餘的標籤或是與當前jsp檔案重複的東西。例如裡面不要包含<html><body>這樣的標籤,因為是把原始碼原封不動的附加過來,所以會與當前的jsp中的這樣的標籤重複導致出錯。  

動態include:  <jsp:include page=”header.jsp” flush=”true” ></jsp:include>

此時引入執行頁面或生成的應答文字.jsp:include標籤匯入一個重用檔案的時候,這個檔案是經過編譯的,通俗點說就是附加這個要匯入檔案經過編譯後的效果,所以可以含有與當前jsp程式中重複的內容,因為在附加過來之前就會被解析掉。其中flush 表示在讀入包含內容之前是否清空任何現有的緩衝區。

2.include頁面攜帶入參

<jsp:include page=”header.jsp” flush=”true”>

        <jsp: param name=”userID”value=”2”/>

<jsp:include>

<jsp:param name = "" value="">是將值傳給被包含頁面(即header.jsp),可通過<%=request.getParameter("userID")%>獲取

3.兩種用法的區別

區別

include

jsp:include

執行時間

翻譯階段

在請求處理階段執行

引入的內容

引入靜態文字,先包含,後編譯 引入執行頁面或servlet所生成的應答文字. 被包含的檔案先編譯,後包含
進來,然後顯示

 

翻譯階段:

       jsp頁面不能原封不動地被傳送給瀏覽器,全部的jsp元素都必須首先由伺服器進行處理。這是通過將jsp頁面轉達化成servlet,然後執行這個servlet來結束的。伺服器需要一個jsp容器來處理jsp頁面。jsp容器平常以servlet的形式來實現,這個servlet經過配置,可以處理對jsp頁面的全部請求。

Jsp容器同時將jsp頁面轉化成servlet(稱為jsp頁面實現類—JSP Page implementation class),並編譯這個servlet。這兩步就組成了翻譯階段.

 

請求處理階段:

      Jsp容器除了上面提到的同時將jsp頁面轉化成servlet外,還同時呼叫jsp頁面實現類以處理每個請求併產生應答.這個階段我們就稱為請求處理階段.請求處理階段僅執行類文件.

轉載自:https://www.cnblogs.com/bloodhunter/p/4833788.html