【问题标题】:Why, when and in which case, we should use multiple servlet instead of single servlet in spring mvc?为什么,何时以及在何种情况下,我们应该在 spring mvc 中使用多个 servlet 而不是单个 servlet?
【发布时间】:2012-05-11 13:02:48
【问题描述】:

我昨天开始学习 Spring MVC,然后我发现在 Spring MVC(或其他框架)中,我们可以在一个 Web 应用程序中拥有许多 servlet。
Servlet 有一个 url 模式,如果有任何 http 请求,它将被匹配。另一方面,我们可以只使用@RequestMapping 对http 请求进行映射。
所以问题是为什么、何时以及在何种情况下我们应该使用多个 servlet ?
什么是最好的做法?

谢谢。

【问题讨论】:

    标签: jakarta-ee spring-mvc


    【解决方案1】:

    通常使用 Spring MVC,您在 web.xml 中声明一个 servlet,如下所示:

    <servlet>
        <servlet-name>ActivityReplicator</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>ActivityReplicator</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    这个 servlet 将负责处理对您的应用程序的每个请求并将它们分派给正确的控制器。

    使用单个 servlet 会限制必须在 web.xml 中完成的配置。 Spring 控制器专门用于处理来自 DispatcherServlet 的重定向。正如 Nathan 解释的那样,控制器的配置不太复杂。

    我会为您的应用程序中找到的每个域建议一个控制器。例如,一个控制器用于用户管理,另一个控制器用于论坛帖子管理。您可以阅读使用 Spring 的 Restfull 控制器,了解要实现多少个控制器。

    【讨论】:

    • 那么,我应该改用单个 servlet 吗?但是,仍然不清楚(对我来说),为什么不使用多个 servlet。
    • @guiltry:你不要使用多个 servlet,因为使用 Spring MVC 的调度 servlet,你可以使用控制器来代替,而且控制器处理起来也不会那么痛苦。
    • 使用单个 servlet 会限制必须在 web.xml 中完成的配置。 Spring 控制器专门用于处理来自 DispatcherServlet 的重定向。正如 Nathan 解释的那样,控制器的配置不太复杂。
    【解决方案2】:

    如果您想要开发人员 API RESTful 服务之类的东西,使用 Jersey 之类的东西更容易实现,而不是 Spring MVC 的冗长,您可以拥有多个 servlet。在这种情况下,您将拥有一个用于使用 Jersey 的 API 服务的 servlet,以及一个用于处理前端网站的 Spring Servlet。

    【讨论】:

      猜你喜欢
      • 2019-06-13
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 2022-12-26
      • 2011-06-07
      • 2019-05-01
      • 2015-12-02
      • 2018-07-03
      相关资源
      最近更新 更多