我试图通过编写servlet过滤器来根据特定条件将请求转发到特定URL,从而改变我正在使用的第三方应用程序的行为。
我最初尝试使用request.getDispatcher(url).forward();
,但始终显示404页面,显示无法找到网址。我通过使用request.sendRedirect
来解决这个问题,但现在我才意识到404屏幕是我通常通过tomcat看到的服务器。
这让我想到了这个实例中的配置。我试图转发的网址是一个cgi脚本。我们将apache作为通过ajp连接器连接的前端,并且apache配置为执行cgi脚本。
所以我的问题是,来自servlet过滤器的foward是否曾经使它成为apache,或者是tomcat特有的前向处理,这就是为什么它不起作用?
答案 0 :(得分:1)
来自servlet过滤器的foward曾经做过apache
没有。 RequestDispatcher.forward
是appserver的webapp中的内部操作,用于将流控制从一个内部组件(例如servlet)传输到另一个内部组件(例如JSP)。您无法转发到应用程序服务器之外的资源,例如CGI脚本。你必须使用重定向。