Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是FrontController设计模式?DispatcherServlet使用它的级别是多少?_Java_Spring_Spring Mvc_Design Patterns_Front Controller - Fatal编程技术网

Java 什么是FrontController设计模式?DispatcherServlet使用它的级别是多少?

Java 什么是FrontController设计模式?DispatcherServlet使用它的级别是多少?,java,spring,spring-mvc,design-patterns,front-controller,Java,Spring,Spring Mvc,Design Patterns,Front Controller,实际上,我试图理解DispatcherServlet,并了解到它遵循FrontController设计模式。 在试图理解FrontController设计模式时,遇到了此链接 由于我是初学者,所以不太容易理解,但我很少像下面这样理解 如果我们没有FrontController,我们通常会尝试在多个控制器(如身份验证和授权)中复制代码。因此,如果我们想在将来改变某些东西,可维护性就成了一个大问题。因此,有了frontController,我们可以将基本功能移动到frontController,并且

实际上,我试图理解DispatcherServlet,并了解到它遵循FrontController设计模式。 在试图理解FrontController设计模式时,遇到了此链接 由于我是初学者,所以不太容易理解,但我很少像下面这样理解

如果我们没有FrontController,我们通常会尝试在多个控制器(如身份验证和授权)中复制代码。因此,如果我们想在将来改变某些东西,可维护性就成了一个大问题。因此,有了frontController,我们可以将基本功能移动到frontController,并且可以轻松地进行更改

当我在采访中解释同样的事情时,他问我这些基本功能是什么。我告诉了内部化、VIEW解析器、身份验证、授权等,现在再次询问,像没有调度器Servlet一样,你如何处理每个控制器中的这些功能?

由于我基本上是一名桌面应用程序开发人员,我无法回答他的下一个问题

下面是我的问题

  • 首先,我的理解正确吗

  • 如果我的理解是正确的,如何回答面试官的第二个问题?如果没有调度器servlet,你如何处理每个控制器中的这些功能?means要求我编写一些常见功能的伪代码。我不能,因为我是swing开发者。请有人给我解释一下,我们在控制器中重复一些示例代码,现在使用dispatcher我们可以避免

  • 如果我们开始将DispatcherServlet与frontController设计模式进行比较,我们可以说像LocaleResolver、HandlerMapping、ThemeResolver、ViewResolver、HandlerException Resolver、HandlerAdapter、MultipartResolver等是DispatcherServlet的帮助类吗

  • (1) 是所有外部请求的接收中心,并将每个请求传递给相应的处理程序。正如您所解释的,因为这是所有请求的中心位置,所以它可以用于执行所有常见的事情,如安全性、日志记录等

    (2) DispatcherServlet实际上是Spring MVC的前端控制器。它截取每个请求,然后将每个请求分派给已在Spring应用程序上下文中注册的相应控制器

    考虑一下,如果没有DispatcherServlet,您将如何处理 每个控制器中的那些功能

    对于这个问题,我不认为这个问题意味着您需要在每个控制器中编写相同的代码。(如果是这样,那就不是个好主意)


    您可以做一些事情,比如实现一个单独的服务,来完成这些常见的事情(交叉关注点)例如,您可以协调所有传入的请求。

    前端控制器设计模式意味着,应用程序中针对资源的所有请求都将由单个处理程序处理,然后发送到该类型请求的相应处理程序。前端控制器可以使用其他助手来实现调度机制

    前端控制器设计模式可以通过以下两种方式之一实现

  • 使用Servlet
  • 使用过滤器
  • Spring框架实现了FrontController设计模式,使用DispatcherServlet拦截每个请求,并委托负责的控制器处理请求

    若面试官问你们,若你们并没有DispatcherServlet会发生什么,那个么你们如何管理所有这些身份验证和授权的事情,你们可以简单地说,我可以定义一个过滤器来拦截每个请求。过滤器应负责调度、认证和授权事项。Struts使用过滤器实现FrontController设计模式。

    Front Controller定义 前端控制器负责处理所有请求 一个网站。对于web应用程序开发人员来说,它是一个非常有用的工具 结构,因为它允许开发人员的灵活性和能力 为了重用代码而不必一次又一次地添加,它提供了一个单一的操作点来处理对J2EE web应用程序的所有请求,它将请求转发给特定的应用程序控制器,以访问模型和视图进行表示 第三层资源


    让我们检查Dispatcher Servlet的功能,看看它是否正是前端: 请考虑下面的图表:

    正如您在上图中所看到的,前面的控制器是为 MVC模式。它实现为
    javax.servlet.servlet
    servlet,例如struts中的ActionServlet、JSF中的FacesServlet和SpringMVC中的
    DispatcherServlet
    。它处理传入的请求,并将请求委托给 特定应用程序控制器。该应用程序控制器创建和更新模型,并将其委托给前端控制器进行渲染。最后,前端控制器确定特定视图,并渲染该模型数据

    <强>现在考虑步骤为:< /强>

  • 用户单击浏览器或提交应用程序的web表单。这个 请求会在浏览器中留下一些附加信息或 共同信息。此请求到达Spring的DispatcherServlet
    
    与其他基于java的web应用程序一样简单的servlet类。这是个幌子
    SpringMVC框架的控制器,并将所有传入的请求导入
    通过单点。SpringMVC框架将请求集中化
    使用此前端控制器进行流量控制

  • 用户单击浏览器或提交应用程序的web表单。这个 请求离开浏览器,或者带有一些附加内容A