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()
中,我检查请求是否有特定的参数
如果是这样,则通过实例化并调用其服务方法将调用委托给另一个servletServlet2
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?