2011-04-11 158 views
2

我知道,包括和JSP外部文件可以像這樣的東西做JSP文件:包括與Java

<%@ include file="banner.jsp" %> 

但有這樣一個Java類/對象中的一種方式?

+1

你想在java中包含jsp clsas ????????????? – 2011-04-11 17:12:25

+0

@Jigar Joshi:包括一個來自Servlet的jsp視圖是一件非常合理的事情。 – Asaph 2011-04-11 17:13:45

+0

@Jigar:通常我會嘲笑你的這些問號,但在這種情況下,我覺得你是正當的:) – 2011-04-11 17:14:17

回答

5

你可以這樣做一個servlet(或任何具有類訪問當前請求)內,通過RequestDispatcher

request.getRequestDispatcher("/banner.jsp").include(request, response); 

請注意,您應該很少需要這樣做。這意味着你正在從一個servlet輸出視圖內容,並且你應該主要在一個jsp中執行。

+1

這是正確的,但請注意,這不是最佳做法。在servlet中包含其他servlet是有道理的,但在servlet中包含JSP是沒有意義的。您寧願將請求/響應轉發給JSP,而JSP又包含其他JSP。 – BalusC 2011-04-11 17:13:51

+0

@BalusC - 我剛剛添加了該筆記。 – Bozho 2011-04-11 17:14:25

+0

@BalusC和@Bozho:我發現當我使用'forward()'而不是'include()'時,生成的jsp頁面失去了客戶端原始請求的上下文,並且如果我嘗試使用請求對象jsp頁面構建絕對URL,我得到了jsp頁面的url,而不是客戶端請求的內容。我在建立一封郵件 - 這個鏈接到朋友的功能的同時,遇到了這個問題。 – Asaph 2011-04-11 17:20:21

0

在Servlet的您可以撥打:

RequestDispatcher rd = request.getRequestDispatcher("include.jsp"); 
rd.include(request, response); 
0

是沒有辦法的事:

<%@ include file="banner.jsp" %> 
在Java中

,因爲 - 你可以閱讀here這是一個靜態的JSP包含,這是在JSP編譯時完成, 我希望在java中包含靜態代碼這樣的事情。