Java EE FrontController与Spring的DispatcherServlet相同

Vic*_*cky 7 model-view-controller spring design-patterns spring-mvc

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

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

在Spring MVC中,DispatcherServlet充当FrontController(如由Craig墙在书中提到),并且这代表的Servlet到其它控制器的要求,即依次调用相应的服务类(处理请求),然后返回的一个实例ModelAndView,以DispatcherServlet一次.

所以大致这是请求通常的旅行方式:

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

如果将此流与Java EE FrontController模式序列图进行比较,则看起来DispatcherServlet不是真正的FrontController.

你怎么说这个?

Kar*_*ran 11

我会说DispatcherServlet填充前端控制器和调度程序的卷.但是,不是直接委托给视图,DispatcherServlet委托给另一个控制器.这使您可以更好地将演示文稿与业务逻辑分开.在"纯"前端控制器范例中,您可能必须为视图添加一些业务逻辑.

简而言之,DispatcherServlet实现了与Front Controller模式相同的目标.但它确实允许您向调度程序添加另一层控制器,从而略微偏离它.我认为这是件好事.