2012-01-13 47 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

相关问题