tomcat - request.getDispatcher ("/newurl").forward() 在使用通过ajp连接到tomcat的apache时会工作吗?

标签 tomcat redirect apache2 forward ajp

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

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

这让我开始思考这种情况下的配置。我试图转发的 url 是一个 cgi 脚本。我们将 apache 作为通过 ajp 连接器连接的前端,并且将 apache 配置为执行 cgi 脚本。

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

最佳答案

did the foward from the servlet filter ever make it to apache

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

关于tomcat - request.getDispatcher ("/newurl").forward() 在使用通过ajp连接到tomcat的apache时会工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8847607/

相关文章:

java - 如何使用不同的javax.servlet-api?

c++ - 将标准输出转发到 Qt 应用程序中的文件

linux - .htaccess mod_rewrite 用于 web 服务以及隐藏其他文件

javascript - 控制Apache中更改js和CSS文件的浏览器缓存的最佳方法?

java - 在几个时间间隔后将数据发送到 servlet

rest - Pentaho CDA : Basic Authentication and CORS conflict

mysql - 如何在我自己的 Tomcat 服务器上部署 broadleaf demo?

redirect - 做什么>!和>>!在tcsh中做

redirect - 如何检查页面将重定向到的位置

ubuntu - Apache2 在 ubuntu 上重启失败