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

时间:2012-02-03 08:54:39

标签: java servlets

我的web.xml中有一个网址映射,因此对特定网址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的响应,请告诉我。

提前致谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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