实际上,我试图理解DispatcherServlet并知道它遵循FrontController设计模式。
在尝试了解FrontController设计模式时,遇到了此链接
FrontController from Oracle Doc reference
我是个初学者,对此了解不多,但我了解到的一些内容如下
如果没有FrontController,我们通常会尝试在多个控制器(如身份验证和授权)中复制代码。因此,如果我们将来要更改某些内容,那么可维护性将成为一个大问题。因此,有了frontController,我们就可以将基本功能移至frontController,并且可以轻松完成更改。
当我在采访中解释同一件事时,他问我那些基本功能是什么。我告诉了Internalization,viewResolver,Authentication,Authorization等。现在再次询问,考虑像没有调度程序Servlet一样,您如何处理每个控制器中的这些功能?
由于基本上是一名桌面应用程序开发人员,所以我无法回答他的下一个问题。
所以这是我的问题
首先,我的理解正确吗?
如果我的理解是正确的,该如何回答采访者的第二个问题?如果没有调度程序Servlet,您将如何处理每个控制器中的这些功能?意思是要我写一些通用功能的伪代码。我是摇摆开发人员,因此无法做到。有人可以解释一下吗,提供一些示例代码,我们在控制器上重复这些代码,现在可以避免使用调度程序了。
如果我们开始将DispatcherServlet与frontController设计模式进行比较,可以说像LocaleResolver,HandlerMapping,ThemeResolver,ViewResolver,HandlerExceptionResolver,HandlerAdapter,MultipartResolver等。DispatcherServlet的Helper类是吗?
最佳答案
前端控制器设计模式意味着对应用程序中资源的所有请求都将由单个处理程序处理,然后分派给该类型请求的适当处理程序。前端控制器可以使用其他助手来实现调度机制。
前端控制器设计模式可以通过以下两种方式之一来实现。
使用Servlet
使用过滤器
Spring框架使用DispatcherServlet来实现FrontController设计模式,以拦截每个请求并将其委托给负责的控制器来处理该请求。
如果访问者问您,如果您没有DispatcherServlet,那么会发生什么,然后如何管理所有这些身份验证和授权事务,您可以简单地说,我可以定义一个Filter来拦截每个请求。过滤器应负责调度,认证和授权的事情。 Struts使用Filter来实现FrontController设计模式。
关于java - 什么是FrontController设计模式? DispatcherServlet使用多少级别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52324780/