Java tomcat前进阀

Java tomcat前进阀,java,tomcat-valve,Java,Tomcat Valve,我需要在Tomcat服务器上进行以下服务器端重定向或转发:url需要重命名/重定向到。简而言之,没有上下文路径的url将被重定向到具有上下文路径的相同url。 我使用request.getRequestDispatcher().forward(请求,响应)通过一个过滤器实现了这一点;但同样的方法似乎不适用于阀门 到目前为止,我得到了以下信息: public void invoke(Request request, Response response) throws IOException, Se

我需要在Tomcat服务器上进行以下服务器端重定向或转发:url需要重命名/重定向到。简而言之,没有上下文路径的url将被重定向到具有上下文路径的相同url。 我使用request.getRequestDispatcher().forward(请求,响应)通过一个过滤器实现了这一点;但同样的方法似乎不适用于阀门

到目前为止,我得到了以下信息:

public void invoke(Request request, Response response) throws IOException, ServletException {
    String context = getForwardpath(request);
    request.getRequestDispatcher(context).forward(request, response);
    this.getNext().invoke(request, response);
}

private String getForwardpath(Request rq){
    String context = rq.getServletContext().getContextPath();
    /.../
    return context;
}
我部署了一些servlet,它们似乎接收原始url,但没有重定向。是否可以像这样进行服务器端重定向。请注意,我需要的是一个阀门,而不是一个过滤器。

发帖前你有没有碰巧遇到过?Google提出了一个用Tomcat来讨论这个主题的方法,包括一个这样一个阀门的实现,以及一个阀门的实现。所以我会说,“是的,这绝对是可能的。”如果其中一个不适合你的需要,你至少可以使用他们的源代码来引导你朝着正确的方向前进,然后如果你遇到麻烦,再回来问一个更具体的问题

更新:没有“服务器端重定向”这样的术语。重定向意味着将3xx系列响应代码发送回用户代理,以告知其所请求的资源。话虽如此,我自己还没有做过任何Valve开发,但是从,我猜如果你在Tomcat配置中把Valve放得足够高,你可以在进入的过程中修改请求URI,让它正常处理。

你需要在./conf/context.xml(Tomcat)中使用crossContext=“true”如果将请求更改为同一实例上的不同上下文


我找到了blogpost,但无法使用代码,因为它创建了客户端重定向,而我需要服务器端重定向。我还没有意识到我可以检查jBoss的实现,谢谢。我意识到“正确”的短语应该是“转发”请求,我必须使用getrequestDispatcher.forward()让我的阀门按照我想要的方式工作,更新我的问题。