有兩種方法去包含其他檔案或資源到 JSP 網頁中:include 指令和 include 行為(使用 <jsp:include>)。

include 指令(JSP 語法):
<%@ include file=<filename> %>

例如:
<%@ include file="header.html" %>
<%@ include file="banner.html" %>
<%@ include file="tableData.jsp" %>

當頁面在翻譯時期(translation time,或者說翻譯過程)被剖析時,這個指令會告訴 JSP 引擎將指定檔案的程式碼直接加進 JSP 頁面裡。這樣會把 JSP 裡的 include 指令換成檔案原始碼,也就是包含檔案到 JSP 中。翻譯時期指的是將 JSP 網頁翻譯成 Java servlet。當我們第一次要求讀取已修改過或是新撰寫的 JSP 網頁時,JSP container 會做這些翻譯的工作。如果使用 include 指令將資源包含到 JSP 裡,而後來我們又修改資源裡的內容,那麼 JSP container 將不會重新翻譯 JSP 頁面。因此重新讀取 JSP 頁面時,我們將無法看到資源被修改過後的變化。

include 行為(JSP 語法):
<jsp:include page="{relativeURL | <%= expression%>}" flush="true" />

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

例如:
<jsp:include page="scripts/login.jsp" />
<jsp:include page="copyright.html" />
<jsp:include page="servlet/MyServlet" />

<jsp:include page="scripts/login.jsp">
 <jsp:param name="username" value="jsmith" />
</jsp:include>

include 行為會在要求時期(request time)生效,也就是要求讀取 JSP 網頁時。與 include 指令不同的是,include 行為使用相對 URL 去指向資源位址,而資源的 URL 要在 include 行為的 page 屬性中設定。資源是能輸出資料到 HttpResponse 串流的任何東西,因此它可以是 JSP 頁面、HTML 檔案,甚至是 servlet。而唯一限制則是資源必須和 JSP 頁面一樣,要能在同一個網站應用程式之下使用。

當呼叫 include 行為時,資源的輸出會加進回應串流(request stream)裡,而回應串流會傳回給提出網頁要求的客戶端。因此如果資源是另一個 JSP 網頁或是一個 Servlet 的話,那麼它會被呼叫,所產生的輸出會加入回應串流。而如果資源是一個 HTML 檔案,那麼會加入回應串流裡的就只單純地是它的檔案內容。

重要的是要注意如果資源內容有改變的話,那麼這些改變將會在下一次讀取包含它的 JSP 頁面時看到。

如果頁面輸出會先放到緩衝區裡(意思是你已用 page 指令宣告了緩衝區的大小),而且 include 行為的 flush 屬性值是 true 的話,那麼在包含資源之前緩衝區先被填滿(flushed)。如果其值為 flase 則緩衝區不會被填滿。

在 JSP 1.1 中,flush 屬性的值必須為 true。而在 JSP 1.2 版的規格裡,它的值可以是 truefalse,預設則是 true。雖然在規格書裡已定義了預設值,但是 flush 屬性是強制性的(譯註:JSP 1.1 中,flush 是強制地被設成 true)。

param 行為(<jsp:param>)可以與 include 行為一起使用來傳遞參數給資源。這些參數會加進 request 物件裡,而 request 物件在資源中是永遠可以存取的。只要資源知道參數的名字,那麼它就可以取得參數的值。