2012-01-13 44 views
0

我試圖通過編寫一個servlet過濾器來根據特定條件將請求轉發到特定的URL來改變我正在使用的第三方應用程序的行爲。當使用通過ajp連接到tomcat的apache時,request.getDispatcher(「/ newurl」)。forward()會工作嗎?

我最初嘗試使用request.getDispatcher(url).forward();,但始終顯示404頁面,顯示無法找到該網址。我通過使用request.sendRedirect來解決這個問題,但是現在我才意識到404屏幕是我通常看到的由tomcat提供的服務器。

這讓我想起了在這種情況下的配置。我試圖轉發的URL是一個CGI腳本。我們將apache作爲通過ajp連接器連接的前端,並將apache配置爲執行cgi腳本。

所以我的問題是,從servlet過濾器的前鋒是否曾經使它成爲apache,或者是由tomcat專門處理的轉發,這就是爲什麼它不起作用?

回答

1

確實從servlet濾波​​器的FOWARD人會成爲apache和

RequestDispatcher.forward是應用程序服務器的web應用程序內的內部操作,用於流控制從一個內部部件轉移(例如一個servlet)到另一個(例如JSP)。您不能轉發到應用程序服務器之外的資源,如CGI腳本。你必須爲此使用重定向。

+0

謝謝。這幾乎是我所懷疑的,但是我花了大約20分鐘才弄清楚發生了什麼。我認爲它首先與URL編碼有關,所以我正在解決一個不存在的問題。重定向工作正常,所以一切順利。 – 2012-01-13 08:24:53

相關問題