我试图通过编写 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/