2014-05-06 49 views
1

我想在我的jsp頁面中使用RequestDispatcher的incluce方法。 問題是它沒有給出所需的輸出。jsp中的RequestDispatcher

這裏是我的代碼:

<% 

out.println(" end"); 
out.println(" starts"); 
RequestDispatcher rd=request.getRequestDispatcher("myfile.jsp"); 

rd.include(request,response); 

%> 

和myfile.jsp:

<%="good"%> 

這是給輸出:

好下場開始

但我希望輸出成爲: 結束開始好。

任何人都可以解釋。 感謝

回答

0

這是因爲你有包括您的RequestDispatcher類jsp的響應,所以它包括由調用JSP完成的處理((即)打印報表通過out.println)。

從Java文檔,

如果資源是靜態的,包括方法使編程服務器端包含。如果資源是Web組件,則該方法的作用是將請求發送到包含的Web組件,執行Web組件,然後將執行結果包含在來自包含Servlet的響應中。

包含的Web組件可以訪問請求對象,但在響應對象中可以執行的操作受到限制。

它可以寫入響應的主體並提交響應。

它無法設置標題或調用任何影響響應標題的方法,如setCookie。 在從Web組件返回的響應中包含另一個Web資源(如橫幅內容或版權信息)通常很有用。

希望這有助於!

+0

但如果我在servlet中使用相同的語句,說myserv.java然後它會生成預期的響應。爲什麼? – Himanshu

+0

看到[this](http://stackoverflow.com/questions/3106452/how-do-servlets-work-instantiation-session-variables-and-multithreading)和[this](http://stackoverflow.com/questions/2095397/what-is-the-difference-between-jsf-servlet-and-jsp/2097732#2097732)知道servlet和jsp如何正常工作 –

+0

我的問題是爲什麼它先執行請求調度程序,即使它是在後面寫入的。 – Himanshu

相關問題