【问题标题】:Using pure servlets (Java Servlet, no framework) in a project using the Spring framework?在使用 Spring 框架的项目中使用纯 servlet(Java Servlet,无框架)?
【发布时间】:2010-07-15 18:00:48
【问题描述】:

我们希望将一些 Pure Servlet(遵循 Servlet API 的纯 Java 类,无框架)包含在一个严重依赖 Spring 框架的项目中。

当我们编写的所有新代码都大量使用 Spring 3 特性时,在项目中包含这些 servlet 的最佳方式是什么?

【问题讨论】:

  • 完全取决于他们在做什么以及你想用他们做什么。我不确定 Spring 部分,但至少听起来 servlet 正在做他们实际上不应该做的工作。然后,您应该将代码重构为可重用的类,然后您只需在这些 servlet 中导入/使用它们在 Spring webapp 中。
  • 如果它们只是 REST 服务呢?这是对 servlet 的合理使用……
  • @duffymo:是的,但从问题中并不清楚 :) 这仍然取决于。

标签: java spring servlets


【解决方案1】:

您的 servlet 容器可以运行多个 servlet,spring 只是其中之一。为什么不在 web.xml 中包含您的 servlet 并查看它是否有效?它应该工作。 spring 并没有那么具有侵入性,但是(但显然它已经侵入了许多开发人员的思想)

【讨论】:

    【解决方案2】:

    如果您在 web.xml 中声明 servlet,以及 Spring 前端控制器,它肯定会起作用。

    您在声明哪些 URL 映射到 servlet 时必须小心。如果您向 Spring 前端控制器发送“/*”,则您的任何请求都不会到达您的其他 servlet。具体说明您需要发送给每个人的内容。

    【讨论】:

      【解决方案3】:

      您可能知道,servlet 不能配置为 Spring bean。如果您的问题是关于与 servlet 中的 spring bean 协作,请参考 threadthis

      【讨论】:

        【解决方案4】:

        Spring 提供了几个类来简化这种桥接。

        ServletForwardingController

        Spring Controller 实现 转发到一个命名的 servlet,即 web.xml 中的“servlet 名称”而不是 URL 路径映射。目标 servlet 甚至不需要“servlet 映射” 首先在 web.xml 中:A “servlet”声明就足够了。

        对调用现有的 servlet 很有用 通过 Spring 的调度 基础设施,例如申请 Spring HandlerInterceptors 对其 请求。

        ServletWrappingController

        Spring Controller 实现 包装一个 servlet 实例,它 在内部进行管理。这样的包裹 servlet 在此之外不为人所知 控制器;它的整个生命周期是 这里涵盖(与 ServletForwardingController)。

        【讨论】:

          猜你喜欢
          • 2013-03-11
          • 2016-12-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-19
          • 1970-01-01
          • 2011-01-29
          • 1970-01-01
          相关资源
          最近更新 更多