【问题标题】:Call several servlets [duplicate]调用几个servlet [重复]
【发布时间】:2011-01-23 18:03:19
【问题描述】:

可能重复:
How do I execute a sequence of servlets?

我想做一些看起来像这样的事情, 你点击一个按钮(POST方法)->调用servlet1(治疗1)->调用servlet2(治疗2)->调用servlet3(治疗3).....

第二个 Servlet 必须等待第一个 servlet 完成,依此类推。

【问题讨论】:

标签: java servlets


【解决方案1】:

您可以转发/重定向到第二个 servlet 并以这种方式链接它们吗?如果没有,我建议重构让它们调用方法而不是单独的 servlet。

【讨论】:

  • 你能解释一下如何转发/重定向到另一个 servlet 吗?我认为我们只能重定向到 jsp 而不是 servlet
  • 这篇文章展示了如何使用 RequestDispatcher 进行转发:java.boot.by/wcd-guide/ch03s05.html
  • 对。我还应该提到,当您希望它作为同一逻辑单元的一部分时,您可以使用转发。这共享请求参数。当你想“打破”它并让浏览器刷新只调用最后一个 servlet 时,你可以使用重定向。
  • 如果你真的需要,不要使用forward,而是使用include。另请参阅链接的欺骗。
【解决方案2】:

我觉得你需要RequestDispatcher的forward方法:

http://download.oracle.com/javaee/5/api/javax/servlet/RequestDispatcher.html#forward(javax.servlet.ServletRequest,%20javax.servlet.ServletResponse)

将来自 servlet 的请求转发到服务器上的另一个资源(servlet、JSP 文件或 HTML 文件)。

【讨论】:

  • 不,使用包含,而不是转发,另请参阅链接的欺骗。
【解决方案3】:

这种“责任链”设计是开箱即用的 servlet 过滤器,而不是 servlet。这样,您无需使用 RequestDispatcher 显式转发到下一个 servlet,只需在 web.xml 中按所需顺序声明过滤器,并能够根据需要简单地添加或删除(无需触及现有代码)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-24
    • 2021-06-29
    • 2012-04-05
    • 2012-03-18
    • 2020-09-02
    • 2011-03-02
    • 2016-06-09
    • 1970-01-01
    相关资源
    最近更新 更多