【问题标题】:Using a custom Servlet oriented framework, too many servlets, is this an issue使用自定义的面向 Servlet 的框架,太多的 servlet,这是一个问题吗
【发布时间】:2009-11-25 16:40:05
【问题描述】:

在我们的应用程序中,我们通过 Servlet 构建不同的 Web 应用程序。我们的应用程序中有很多很多的 Servlet 和过滤器。

我们已经使用了不同的框架,但不适用于这个特定的旧版 Web 应用程序。一个问题是一个应用程序/servlet 与另一个完全分离。

如果您要重新设计使用这种遗留设计的应用程序,您将如何解决应用程序被太多 servlet 破坏的问题。

我正在考虑某种“Servlet Manager”,它将一组 servlet 分组,然后在适当的时候调用适当的 servlet。

【问题讨论】:

    标签: java servlets jakarta-ee


    【解决方案1】:

    Spring 可以将请求委托给现有的遗留 Servlet(使用 ServletWrappingControllerServletForwardingController),如果这是您想要的。

    因此,您可以将 Spring DispatcherServlet 放在遗留 servlet 的前面,充分利用 Spring 的请求路由功能。 Spring 还可以为您提供更轻松地在 servlet 之间共享内容的工具,同时为您将共享组件放入 servlet 上下文中。

    【讨论】:

      【解决方案2】:

      查找页面控制器/前端控制器模式。它归结为拥有一个控制请求的 servlet。在 servlet 中,您需要查找与特定请求关联的操作(只是一个业务/域对象),然后执行它。

      基本伪示例:

      protected void processRequest(request, response) {
          Action action = ActionFactory.getAction(request);
          action.execute(request, response);
      }
      

      您可以使用原始url-patterns 来返回所需的ActionActionFactory 可以保存Map<String, Action>,其中密钥或多或少是原始url-pattern。您可以使用request.getPathInfo() 来确定@​​987654328@。您可以在 xml 或属性文件中维护这些 url-Action 对,或者只为实现 Action 的类遵循特殊的命名约定。然后Action 实现可以使用“原始”servlet 编码。

      但是,如果您愿意使用现有框架,那么我建议您只采用一个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-02
        • 1970-01-01
        • 2015-01-03
        • 2011-10-23
        相关资源
        最近更新 更多