1

我正在构建一个应用程序,我想在其中拦截 HTTP 请求并决定是否将它们传递给 JAX-RS 实现进行处理。

我基本上有一个过滤器和前端控制器 servlet 组合,并希望 servlet 将路由委托给 Jersey 或我的“标准”路由器。

我可以看到很多使用 Jersey 作为 servlet 或启动 HTTP 服务器的示例,但似乎没有一种方便的方法来获取 HttpServletRequest/HttpServletResponse 对并说“你去 Jersey,路由这个我”。

我错过了一些明显的东西吗?

4

1 回答 1

3

在这种情况下,我认为 RequestDispatcher 可能会有所帮助

RequestDispatcher对象可用于将请求转发到另一个资源,因此您可以尝试以下操作:

public class FrontServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext sc = this.getServletContext();
        if (someCondition) {
            sc.getRequestDispatcher("/jersey/servlet").forward(req, resp);
        }else{
            sc.getRequestDispatcher("/standard/router").forward(req, resp);
        }
    }
}
于 2013-08-13T00:48:15.643 回答