Java 从另一个servlet调用servlet的service()

Java 从另一个servlet调用servlet的service(),java,servlets,Java,Servlets,我的web.xml中有一个url映射,这样对特定url的请求x.pt就会映射到一个Servlet,比如Servlet1。在这个servlet的service()中,我检查请求是否有特定的参数 如果是这样,则通过实例化并调用其服务方法将调用委托给另一个servletServlet2 public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException

我的
web.xml
中有一个url映射,这样对特定url的请求
x.pt
就会映射到一个Servlet,比如
Servlet1
。在这个servlet的
service()
中,我检查请求是否有特定的参数

如果是这样,则通过实例化并调用其服务方法将调用委托给另一个servlet
Servlet2

public void service(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {

    // if the call is for some special events (request has some specific parameter)
    if (req.getParameter(conditionCheck()) {
        doPost(req, res);
    } else {
        // Report parsing
    }
}

public void doPost(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {

    try {
        // instantiate Servlet2 object
        servlet2.init(this.getServletConfig());
        servlet2.service(req, res);
        servlet2.destroy();
    } catch (Exception e) {
        LOG.error("Unable to execute event", e);
    }
}
当请求用于特殊事件时(例如,到Servlet2),浏览器返回一些JSON文本 如果我需要做一些额外的事情来获得Servlet2对brwoser的响应,请务必让我知道


提前谢谢

您可以使用RequestDispacher转发您的请求:

RequestDispatcher rd = getServletContext().getRequestDispatcher(destination);
rd.forward(request, response);

正如Kris所说,我希望RequestDispatcher能够工作,但当我看到像这样直接调用servlet时,我总是感到不舒服。您是否有机会将servlet2提供的逻辑移动到servlet1和servlet2都可以调用的单独对象中?如果可以,我认为它将为您提供更好、更易于测试的解决方案。

您的问题是什么?这有用吗?或者你有问题吗?也许我不明白。为什么不将请求重定向/转发到第二个servlet?