我的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的响应,请告诉我。
提前致谢!
答案 0 :(得分:1)
您可以使用RequestDispacher转发您的请求:
RequestDispatcher rd = getServletContext().getRequestDispatcher(destination);
rd.forward(request, response);
答案 1 :(得分:0)
正如Kris所说,我希望RequestDispatcher可以工作,但是当我看到像这样直接调用servlet时,我总是感到不舒服。您是否有机会将servlet2提供的逻辑移动到servlet1和servlet2都可以调用的单独对象中?如果可以,我认为它会为您提供更好,更容易测试的解决方案。