2012-09-06 80 views

回答

2

都是一樣的,唯一不同的是單獨tag handler類是<jsp:forward>寫的。

有關標籤處理程序,請參閱tutorial

+0

有一次,當我第一次閱讀jsp:forward tag很久以前,我很困惑,因爲根據我的知識,沒有設置任何參數,我想知道爲什麼沒有而不是來傳遞屬性。 – Sudeep

1

沒有功能差異。 <jsp:forward>和RequestDispatcher.forward()實際上都是<jsp:forward>,它們在內部使用RequestDispatcher.forward()來轉發請求。是動作標籤,並且有標籤處理程序類。 一直記得JSP也會通過web容器轉換成一個servlet。

0

如果僅考慮轉發行爲,則不存在功能差異。但他們似乎並不完全一樣。 我測試下面的代碼。

<% 
System.out.println("source 1"); 
RequestDispatcher disp = request.getRequestDispatcher("1_f1.jsp"); 
disp.forward(request, response); 
System.out.println("source 2"); 
%> 

<% 
System.out.println("source 1"); 
%> 
<jsp:forward page="1_f1.jsp"/> 
<% 
System.out.println("source 2"); 
%> 

當使用disp.forward(),控制檯將輸出 「源2」。 但使用<jsp:forward/>時,不會輸出「source 2」。

將轉換爲以下語句。

pageContext = _jspxFactory.getPageContext(this, request, response, 
    null, true, 8192, true); 
_jspx_page_context = pageContext; 
if (true) { 
    _jspx_page_context.forward("1_f1.jsp"); 
    return; 
} 

這是return;聲明。所以,<jsp:forward/>之後的代碼將不會運行。

相關問題