DispatcherServlet actúa como controlador frontal para aplicaciones web basadas en Spring. Entonces, ¿qué es Front Controller? Así que es bastante simple. Cualquier solicitud llegará a nuestro sitio web, el controlador frontal se parará al frente y aceptará todas las requests y una vez que el controlador frontal acepte esa solicitud, este es el trabajo del controlador frontal que tomará una decisión que quién es el controlador correcto para manejar esa solicitud. Por ejemplo, consulte la imagen de abajo.
Supongamos que tenemos un sitio web llamado student.com y el cliente realiza una solicitud para guardar los datos de los estudiantes presionando la siguiente URL student.com/save, y primero llega al controlador frontal y una vez que el controlador frontal acepta esa solicitud, va para asignar a Controller_1 ya que este controlador maneja la solicitud para la operación /save. Luego va a devolver la respuesta al Cliente.
Entonces, ¿ahora podríamos estar pensando en cómo crear un controlador frontal en una aplicación Spring MVC? Pero la buena noticia es que Spring Framework Developer ya creó el controlador frontal y el nombre de ese controlador en particular es DispatcherServelt. Podemos usar ese controlador frontal en su proyecto Spring MVC. Realmente no se requiere uno para crear un controlador frontal, pero podemos reutilizar ese controlador frontal creado por Spring Framework Developer y lo llamaron DispatcherServelt. Podemos decir
DispatcherServlet maneja un HttpRequest entrante , delega la solicitud y procesa esa solicitud de acuerdo con las interfaces de HandlerAdapter configuradas que se han implementado dentro de la aplicación Spring junto con las anotaciones que lo acompañan que especifican los controladores, los puntos finales del controlador y los objetos de respuesta.
Aquí veremos la forma más fácil de configurar Dispatcher Servlet en una aplicación Spring con la ayuda de la clase AbstractAnnotationConfigDispatcherServletInitializer . Podemos hacerlo escribiendo solo dos líneas de código.
Implementación:
Es como se muestra a continuación secuencialmente paso a paso
Paso 1: configurar el proyecto
Nota: Vamos a utilizar Spring Tool Suite 4 IDE para este proyecto. Consulte este artículo para instalar STS en su máquina local ¿Cómo descargar e instalar Spring Tool Suite (Spring Tools 4 para Eclipse) IDE?
Vaya a su STS IDE, luego cree un nuevo proyecto maven, Archivo> Nuevo> Proyecto Maven, y elija el siguiente arquetipo como se muestra en la imagen a continuación:
Paso 2: agregar algunas dependencias de Maven
Agregue las siguientes dependencias y complementos de maven a su archivo pom.xml .
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.18</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!-- plugin --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build>
A continuación se muestra el código completo para el archivo pom.xml después de agregar estas dependencias.
Archivo: pom.xml
XML
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.geeksforgeeks</groupId> <artifactId>spring-calculator</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>spring-calculator Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.18</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>spring-calculator</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> </project>
Paso 3: Configurar Dispatcher Servlet en apenas dos líneas
Antes de pasar a la parte de codificación, echemos un vistazo a la estructura del archivo en la imagen de abajo.
Entonces, primero cree una carpeta src/main/java y dentro de esta carpeta cree una clase llamada CalculatorAppIntilizer y colóquela dentro del paquete com.geeksforgeeks.calculator.config y extienda la clase AbstractAnnotationConfigDispatcherServletInitializer . Consulte la imagen de abajo.
Y cada vez que extiende esta clase, tiene algunos métodos preabstractos que necesitamos para proporcionar la implementación.
Archivo: CalculatorAppIntilizer.java
Java
// Java Program to Illustrate CalculatorAppIntilizer Class package com.geeksforgeeks.calculator.config; // Importing required classes import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; // Class public class CalculatorAppIntilizer extends AbstractAnnotationConfigDispatcherServletInitializer { // Method 1 @Override protected Class<?>[] getRootConfigClasses() { return null; } // Method 2 @Override protected Class<?>[] getServletConfigClasses() { return aClass; } // Method 3 @Override protected String[] getServletMappings() { return arr; } }
Ahora, dentro de esta clase, solo tenemos que escribir dos líneas de código para configurar el servlet de despachador.
Primera línea de código: en la primera línea, debe escribir el código dentro del método getServletMappings() para configurar el mapeo para el servlet del despachador, es algo como esto.
// Add mapping url @Override protected String[] getServletMappings() { String arr[] = { "/gfg.com/*" }; return arr; }
2da Línea de Código: En la segunda línea tienes que escribir el código dentro del método getServletConfigClasses() para registrar la clase de configuración de primavera es algo como esto. Y ha terminado con la configuración de Dispatcher Servlet.
// Register the Spring Config File @Override protected Class<?>[] getServletConfigClasses() { Class aClass[] = { CalculatorAppConfig.class }; return aClass; }
Aquí la clase CalculatorAppConfig es nuestro archivo de configuración de primavera. Entonces, vaya a la carpeta src/main/java y dentro de esta carpeta cree una clase llamada CalculatorAppConfig y colóquela dentro del paquete com.geeksforgeeks.calculator.config . A continuación se muestra el código para el archivo CalculatorAppConfig.java . Hemos utilizado la anotación @Configuration y @ComponentScan en esta clase.
Archivo: CalculatorAppConfig .java
// Java Program to Illustrate CalculatorAppConfig Class package com.geeksforgeeks.calculator.config; // Importing required classes import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; // Class @Configuration @ComponentScan(basePackages = "com.geeksforgeeks.calculator.controllers") public class CalculatorAppConfig {}
Y debajo está el código completo para el archivo CalculatorAppIntilizer.java . Se agregan comentarios dentro del código para comprender el código con más detalle.
Archivo: CalculatorAppIntilizer.java
Java
// Java Program to Implement CalculatorAppIntilizer Class package com.geeksforgeeks.calculator.config; // Importing required classes import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; // Class public class CalculatorAppIntilizer extends AbstractAnnotationConfigDispatcherServletInitializer { // Method 1 @Override protected Class<?>[] getRootConfigClasses() { return null; } // Method 2 // Registering the Spring config file @Override protected Class<?>[] getServletConfigClasses() { Class aClass[] = { CalculatorAppConfig.class }; return aClass; } // Method 3 // Add mapping url @Override protected String[] getServletMappings() { String arr[] = { "/gfg.com/*" }; return arr; } }
Ahora ejecute su aplicación para ver si el servlet del despachador se ha inicializado o no. Consulte la imagen de abajo.
Y aquí puede ver que nuestro servlet de despachador se ha inicializado y «despachador» es el nombre predeterminado proporcionado por Spring.
Paso 4: Crear controlador y probar la aplicación
Vaya a la carpeta src/main/java y dentro de esta carpeta cree una clase llamada GfgController y colóquela dentro del paquete com.geeksforgeeks.calculator.controllers . A continuación se muestra el código para el archivo GfgController.java .
Archivo: archivo GfgController.java
Java
package com.geeksforgeeks.calculator.controllers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class GfgController { @RequestMapping("/welcome") @ResponseBody public String helloGfg() { return "Welcome to GeeksforGeeks!"; } }
Paso 5: Ejecute la aplicación
Ahora ejecute su aplicación Spring MVC y presione la siguiente URL
http://localhost:8080/spring-calculator/gfg.com/welcome
y podemos ver el resultado como se muestra en la imagen de abajo y nuestra aplicación funciona bien.
Publicación traducida automáticamente
Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA