2010-07-15 92 views
1

我们已经在一个严重依赖Spring框架的项目中加入了一些Pure Servlets(遵循Servlet API,没有框架的纯Java类)。在使用Spring框架的项目中使用纯servlet(Java Servlet,无框架)?

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

+0

完全取决于他们在做什么以及想要对他们做什么。我对Spring部分不太确定,但至少听起来像servlet正在做他们实际上不应该做的工作。然后,您应该将代码重构为可重用类,然后您只需在Spring webapp中的这些servlet *和*中导入/使用这些类。 – BalusC 2010-07-15 18:16:45

+0

如果他们只是REST服务会怎么样?这是servlets的合理使用... – duffymo 2010-07-15 23:08:27

+0

@duffymo:的确如此,但这个问题并不清楚:)它依然取决于。 – BalusC 2010-07-16 02:50:58

回答

0

正如您所知,servlet不能配置为Spring bean。如果您的问题是关于使用servlet中的spring bean进行colloborating,请参阅此thread以及this

1

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

1

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

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

0

Spring提供了几个类来使桥接更容易。

ServletForwardingController

春季控制器实现, 转发到指定的服务程序,即 “servlet的名字” 在web.xml中,而不是一个 URL路径映射。目标servlet 甚至在web.xml中甚至不需要“servlet映射” :A “servlet”声明就足够了。

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

ServletWrappingController

春季控制器实现, 包装它 内部管理一个servlet实例。这种包装的 servlet在此 控制器之外是未知的;它的整个生命周期为 (与此相对应的是 ServletForwardingController)。