0

我试图通过编写一个 servlet 过滤器来改变我正在使用的第 3 方应用程序的行为,以根据某些条件将请求转发到特定的 URL。

我最初尝试过,request.getDispatcher(url).forward();但总是显示一个 404 页面,显示找不到该 url。我通过request.sendRedirect改用解决了这个问题,但直到现在我才意识到 404 屏幕是我通常看到的由 tomcat 启动的服务器。

这让我开始思考这个例子中的配置。我要转发的 url 是一个 cgi 脚本。我们有 apache 作为通过 ajp 连接器连接的前端,并且 apache 被配置为执行 cgi 脚本。

所以我的问题是,servlet 过滤器的转发是否曾经到达 apache,或者转发是否由 tomcat 专门处理,这就是为什么它不起作用?

4

1 回答 1

1

servlet 过滤器的转发器是否到达了 apache

No. RequestDispatcher.forward是应用服务器的 webapp 中的内部操作,用于将流控制从一个内部组件(例如 servlet)转移到另一个(例如 JSP)。您不能转发到应用服务器之外的资源,例如您的 CGI 脚本。您必须为此使用重定向。

于 2012-01-13T08:16:07.237 回答