【问题标题】:Why use servlets in spring MVC in addition to annotated controllers classes?除了带注释的控制器类之外,为什么还要在 Spring MVC 中使用 servlet?
【发布时间】:2012-09-05 13:15:14
【问题描述】:

背景

我是 Spring MVC 的新手,但我可以清楚地看到使用带有 @Controller 注释的类而不是 HttpServlet 的子类的好处。

问题

由于 spring 允许您拥有多个 servlet-context 文件,我假设有些人将带注释的控制器类和标准 HttpServlet 混合在一起。我的问题是你为什么想要?那么您是否不必费心将那个 servlet 连接到适当的视图而失去当初选择 Spring MVC 的原因?

【问题讨论】:

    标签: jakarta-ee servlets spring-mvc


    【解决方案1】:

    Spring 的主要思想之一是使其不显眼 - 如果您决定在应用程序中使用 Spring,则不应强迫您重写所有代码。

    从这个角度来看,在 Spring 应用程序中使用 Servlets 而不是 DispatcherServlet 很容易证明:您可能拥有包含遗留代码的 Servlets,或者实现为 Servlets 的第三方库( Web 服务、RPC、其他 Web 框架等)。您不想一次重写这些遗留组件,但是 Spring 允许您通过将应用程序的核心服务移动到根应用程序上下文来利用其在这些组件中的优势,以便您也可以从 Spring MVC 控制器中使用它们来自其他Servlets。

    【讨论】:

      【解决方案2】:

      Spring 注释控制器与 Spring DispatcherServlet 结合使用。这是 HttpServlet 的 Spring 实现,它提供了 documentation 中描述的所有功能。

      DispatcherServlet 在 web.xml 中配置,并提供了 Spring 配置的位置。这可以是一个或多个 xml 文件,或者注释为 @Configuration 的多个类之一(来自 Spring 3.1)。

      此配置应包含元素(或@EnableWebMvc)。这将触发 spring 在应用程序启动时扫描 @Controller 类的类路径。

      【讨论】:

      • 谢谢,但我的问题不是关于 Spring DispatcherServlet 的工作原理。我的问题是你为什么要使用额外的 servlet 而不仅仅是 DispatcherServlet。
      • 抱歉。您可能希望有一个根本不使用 Spring MVC 的附加 servlet。 JAX-WS 可能是原因之一。
      猜你喜欢
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多