📜  Spring 中的 Dispatcher Servlet 是什么?

📅  最后修改于: 2022-05-13 01:55:19.340000             🧑  作者: Mango

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 操作的请求。然后它将响应返回给客户端。

调度程序 Servlet

那么现在您可能正在考虑如何在 Spring MVC 应用程序中创建前端控制器?但好消息是,前端控制器已经由 Spring Framework Developer 创建,并且该特定控制器的名称是DispatcherServlet 。您可以在 Spring MVC 项目中使用该前端控制器。您实际上不需要创建前端控制器,但您可以重用由 Spring Framework Developer 创建的前端控制器,他们将其命名为DispatcherServlet 。我们可以说

设置 Dispatcher Servlet

现在让我们看看如何在 Spring MVC 项目中设置 DispatcherServlet。

第 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
    

为什么这行“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 已成功初始化,并且初始化完成,没有任何异常或错误。