Spring 中的 Dispatcher Servlet 是什么?
Spring 是最流行的Java EE 框架之一。它是一个开源轻量级框架,允许Java EE 7 开发人员构建简单、可靠且可扩展的企业应用程序。该框架主要侧重于提供各种方法来帮助您管理业务对象。与Java数据库连接 (JDBC)、JavaServer Pages (JSP) 和Java Servlet 等经典Java框架和应用程序编程接口 (API) 相比,它使 Web 应用程序的开发更加容易。该框架使用各种新技术,如面向方面编程 (AOP)、普通Java对象 (POJO) 和依赖注入 (DI) 来开发企业应用程序。现在我们将讨论 Spring 框架中最重要的概念之一,例如Dispatcher Servlet 。
调度程序 Servlet
DispatcherServlet 充当基于 Spring 的 Web 应用程序的前端控制器。那么现在什么是前端控制器?所以这很简单。任何请求都将进入我们的网站,前端控制器将站在前面并接受所有请求,一旦前端控制器接受该请求,那么这就是前端控制器的工作,它将做出决定谁是处理该请求的正确控制者。例如,请参阅下图。假设我们有一个名为student.com的网站,客户端通过点击以下 URL student.com/save发出保存学生数据的请求,它首先到达前端控制器,一旦前端控制器接受该请求,它就会去分配给 Controller_1,因为该控制器处理 /save 操作的请求。然后它将响应返回给客户端。
那么现在您可能正在考虑如何在 Spring MVC 应用程序中创建前端控制器?但好消息是,前端控制器已经由 Spring Framework Developer 创建,并且该特定控制器的名称是DispatcherServlet 。您可以在 Spring MVC 项目中使用该前端控制器。您实际上不需要创建前端控制器,但您可以重用由 Spring Framework Developer 创建的前端控制器,他们将其命名为DispatcherServlet 。我们可以说
DispatcherServlet handles an incoming HttpRequest, delegates the request, and processes that request according to the configured HandlerAdapter interfaces that have been implemented within the Spring application along with accompanying annotations specifying handlers, controller endpoints, and response objects.
设置 Dispatcher Servlet
现在让我们看看如何在 Spring MVC 项目中设置 DispatcherServlet。
Note: We are going to use Spring Tool Suite 4 IDE for this project. Please refer to this article to install STS in your local machine How to Download and Install Spring Tool Suite (Spring Tools 4 for Eclipse) IDE?
第 1 步:在您的 STS IDE 中创建一个动态 Web 项目。您可以参考这篇文章在 STS 中创建动态 Web 项目:如何在 Spring Tool Suite 中创建动态 Web 项目?
第 2 步:从此链接下载 spring JAR 文件,然后转到src > main > webapp > WEB-INF > lib文件夹并通过这些 JAR 文件。
第 3 步:请参阅本文配置 Apache Tomcat 服务器并使用您的应用程序配置 Tomcat 服务器。现在我们准备好了。
第 4 步:现在转到src > main > webapp > WEB-INF > web.xml文件,在这里我们必须在
frontcontroller-dispatcher
org.springframework.web.servlet.DispatcherServlet
现在让我们告诉这个 servlet,嘿 servlet,你必须处理所有来到我们称为 student.com 的网站的请求(对于这个例子)。所以我们要告诉上面的 servlet 的方式是我们可以写这样的东西
frontcontroller-dispatcher
/student.com/*
所以这确实意味着 servlet “frontcontroller-dispatcher” 将处理从 student.com/anything 开始的所有请求,可能是 student.com/save 或 student.com/get,任何东西。但它必须从 student.com 开始。这样我们就完成了 Dispatcher Servlet 的创建。
Dispatcher Servlet 何时初始化?
一旦我们在 tomcat 服务器中部署创建的动态 Web 应用程序,Dispatcher Servlet 将被初始化。因此,在部署它之前,让我们在web.xml文件中添加以下行
1
所以现在修改后的 servlet 代码是
frontcontroller-dispatcher
org.springframework.web.servlet.DispatcherServlet
1
为什么这行“
这将确保无论何时您的服务器启动,DispatcherServlet 都会被初始化。如果你没有编写这行代码,那么每当第一个请求从 /student.com 开始到达你的服务器时,只有 DispatcherServlet 将被初始化,我们不想要它。我们希望 DispatcherServlet 在服务器启动期间被初始化。这就是我们编写这行代码的原因。完整的 web.xml 文件如下所示:
示例:文件:web.xml
XML
myfirst-mvc-project
index.html
index.jsp
index.htm
default.html
default.jsp
default.htm
frontcontroller-dispatcher
org.springframework.web.servlet.DispatcherServlet
1
frontcontroller-dispatcher
/student.com/*
XML
第 5 步:现在转到src > main > webapp > WEB-INF并创建一个 XML 文件。实际上,这是一个 Spring 配置文件,如 beans.xml 文件。并且文件名必须是这种格式
YourServletName-servlet.xml
例如,对于这个项目,文件的名称必须是
frontcontroller-dispatcher-servlet.xml
因此,您可以创建一个 Spring 配置文件,也可以只创建一个简单的 XML 文件,在该文件中添加以下代码行。所以下面给出了frontcontroller-dispatcher-servlet.xml的代码。
示例: frontcontroller-dispatcher-servlet.xml
XML
项目文件结构如下:
现在运行您的应用程序。要运行应用程序,请参阅下图。
现在在控制台中,您可以看到我们的 DispatcherServlet 已成功初始化,并且初始化完成,没有任何异常或错误。