【问题标题】:Java EE FrontController Vs Spring's DispatcherServletJava EE FrontController 与 Spring 的 DispatcherServlet
【发布时间】:2011-05-03 16:07:42
【问题描述】:

如果您查看Java EE FrontController 序列图,Controller 将请求委托给 Dispatcher,并且文档说:

调度员负责视图管理和导航, 管理要呈现给用户的下一个视图的选择,以及 提供对该资源进行矢量控制的机制。

在 Spring MVC 中,DispatcherServlet 充当 FrontController(如 Craig Walls 的书中所述),此 Servlet 将请求委托给其他控制器,这些控制器依次调用适当的 Service 类(用于处理请求),然后再次将ModelAndView 的实例返回给DispatcherServlet

请求通常是这样传输的:

客户端 -> DispatcherServlet -> 控制器 -> 服务 -> DAO

如果将此流程与Java EE FrontController 模式序列图进行比较,DispatcherServlet 似乎不是真正的 FrontController。

你对此有什么看法?

【问题讨论】:

    标签: spring spring-mvc design-patterns model-view-controller


    【解决方案1】:

    我会说 DispatcherServlet 填充了前端控制器和调度程序的角色。然而,DispatcherServlet 不是直接委托给视图,而是委托给另一个控制器。这使您能够更好地将演示文稿与业务逻辑分开。在“纯”前端控制器范式中,您可能必须在视图中添加一些业务逻辑。

    简而言之,DispatcherServlet 实现了与前端控制器模式相同的目标。但它确实与它略有不同,它允许您向调度程序添加另一层控制器。我认为这是一件好事。

    【讨论】:

      猜你喜欢
      • 2013-10-05
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 2019-05-12
      • 1970-01-01
      相关资源
      最近更新 更多