【问题标题】:Will request.getDispatcher("/newurl").forward() work when using apache connected to tomcat via ajp?使用通过ajp连接到tomcat的apache时 request.getDispatcher("/newurl").forward() 会工作吗?
【发布时间】:2012-01-13 08:11:15
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: tomcat redirect apache2 forward ajp


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。这几乎是我所怀疑的,但我花了大约 20 分钟才弄清楚发生了什么。我认为它首先与 URL 编码有关,所以我正在努力解决一个不存在的问题。重定向工作正常,所以一切都很好。
    猜你喜欢
    • 2012-11-01
    • 2020-12-09
    • 1970-01-01
    • 2016-07-04
    • 2013-05-17
    • 2017-04-26
    • 2013-05-27
    • 2011-03-24
    • 2010-10-31
    相关资源
    最近更新 更多