¿Qué es Dispatcher Servlet en Spring?

Spring es uno de los marcos Java EE más populares. Es un marco ligero de código abierto que permite a los desarrolladores de Java EE 7 crear aplicaciones empresariales sencillas, fiables y escalables. Este marco se centra principalmente en proporcionar varias formas de ayudarlo a administrar sus objetos comerciales. Hizo que el desarrollo de aplicaciones web fuera mucho más fácil en comparación con los marcos de Java clásicos y las interfaces de programación de aplicaciones (API), como la conectividad de bases de datos Java (JDBC), JavaServer Pages (JSP) y Java Servlet. Este marco utiliza varias técnicas nuevas, como la programación orientada a aspectos (AOP), el objeto Java antiguo simple (POJO) y la inyección de dependencia (DI), para desarrollar aplicaciones empresariales. Ahora vamos a discutir uno de los conceptos más importantes en el marco Spring, por ejemplo , Dispatcher Servlet .

Servlet despachador

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/savey primero llega al controlador frontal y una vez que el controlador frontal acepta esa solicitud, se asignará al Controlador_1 ya que este controlador maneja la solicitud para la operación /guardar. Luego va a devolver la respuesta al Cliente. 

Dispatcher Servlet

Entonces, ¿ahora podría 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 DispatcherServlet . Puede usar ese controlador frontal en su proyecto Spring MVC. Realmente no es necesario que cree un controlador frontal, pero puede reutilizar ese controlador frontal creado por Spring Framework Developer y lo llamaron DispatcherServlet . 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.

Configuración del servlet de despachador

Ahora veamos cómo podemos configurar DispatcherServlet en nuestro proyecto Spring MVC.  

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? 

Paso 1: cree un proyecto web dinámico en su STS IDE. Puede consultar este artículo para crear un proyecto web dinámico en STS: ¿Cómo crear un proyecto web dinámico en Spring Tool Suite?

Paso 2: descargue el archivo Spring JAR desde este enlace y vaya a la carpeta src> main> webapp> WEB-INF> lib y pase estos archivos JAR. 

Paso 3: Consulte este artículo Configuración del servidor Apache Tomcat y configure el servidor Tomcat con su aplicación. Ahora estamos listos para ir.

Paso 4: Ahora ve al archivo src > main > webapp > WEB-INF > web.xml y aquí tenemos que configurar nuestro controlador frontal dentro de una etiqueta <servlet>…</servlet> algo como esto. 

<servlet>

      <!-- Provide a Servlet Name -->
    <servlet-name>frontcontroller-dispatcher</servlet-name>
    
    <!-- Provide a fully qualified path to the DispatcherServlet class -->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    

</servlet>

Ahora digámosle a este servlet, hey servlet, tienes que manejar todas las requests que llegan a nuestro sitio web llamado student.com (para este ejemplo). Entonces, la forma en que le diremos al servlet anterior es que podemos escribir algo como esto

<servlet-mapping>

      <!-- Provide a Servlet Name that you want to map -->
    <servlet-name>frontcontroller-dispatcher</servlet-name>
    
    <!-- Provide a url pattern -->
    <url-pattern>/student.com/*</url-pattern>
    
</servlet-mapping>

Entonces, esto significa que el servlet «frontcontroller-dispatcher» manejará todas las requests a partir de student.com/anything, que puede ser student.com/save o student.com/get, cualquier cosa. Pero debe comenzar con student.com. Así que hemos terminado con la creación de un Dispatcher Servlet. 

¿Cuándo se inicializará el servlet de despachador? 

El Dispatcher Servlet se inicializará una vez que implementemos la aplicación web dinámica creada dentro del servidor tomcat. Entonces, antes de implementarlo, agreguemos la siguiente línea dentro del archivo  web.xml

<load-on-startup>1</load-on-startup>

Entonces ahora el código modificado para el servlet es 

<servlet>

      <!-- Provide a Servlet Name -->
    <servlet-name>frontcontroller-dispatcher</servlet-name>
    
    <!-- Provide a fully qualified path to the DispatcherServlet class -->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    
    <load-on-startup>1</load-on-startup>
    
</servlet>

¿Por qué esta línea “<load-on-startup>1</load-on-startup>”?

Esto asegurará que cada vez que su servidor se inicie, DispatcherServlet se inicializará. Y si no está escribiendo esta línea de código, cada vez que llegue la primera solicitud a su servidor a partir de /student.com, en ese momento solo se inicializará DispatcherServlet y no lo queremos. Queremos que DispatcherServlet se inicialice durante el tiempo de inicio del servidor. Por eso hemos escrito esta línea de código. El archivo web.xml completo se proporciona a continuación:

Ejemplo: Archivo: web.xml 

XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
   
  <display-name>myfirst-mvc-project</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.jsp</welcome-file>
    <welcome-file>default.htm</welcome-file>
  </welcome-file-list>
   
  <absolute-ordering/>
   
  <servlet>
      <!-- Provide a Servlet Name -->
    <servlet-name>frontcontroller-dispatcher</servlet-name>
    <!-- Provide a fully qualified path to the DispatcherServlet class -->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
   
  <servlet-mapping>
      <!-- Provide a Servlet Name that you want to map -->
    <servlet-name>frontcontroller-dispatcher</servlet-name>
    <!-- Provide a url pattern -->
    <url-pattern>/student.com/*</url-pattern>
  </servlet-mapping>
   
</web-app>

Paso 5: Ahora ve a   src > main > webapp > WEB-INF  y crea un archivo XML. En realidad, este es un archivo de configuración de Spring como el archivo beans.xml. Y el nombre del archivo debe estar en este formato.

YourServletName-servlet.xml  

Por ejemplo, para este proyecto, el nombre del archivo debe ser 

frontcontroller-dispatcher-servlet.xml

Entonces, puede crear un archivo de configuración de Spring o simplemente puede crear un archivo XML simple y agregar las siguientes líneas de código dentro de ese archivo. Entonces, el código para frontcontroller-dispatcher-servlet.xml se proporciona a continuación. 

Ejemplo: frontcontroller-despachador-servlet.xml 

XML

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
 
</beans>

La estructura del archivo del proyecto es la siguiente:

project structure

Ahora ejecute su aplicación. Para ejecutar la aplicación, consulte la imagen a continuación.

Ahora en la consola, puede ver que nuestro DispatcherServlet se ha inicializado con éxito y también se completó la inicialización sin excepciones ni errores.

Publicación traducida automáticamente

Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *