DispatcherServlet Spring: cambie el nombre del archivo de configuración de contexto DispatcherServlet

Spring: cambie el nombre del archivo de configuración de contexto DispatcherServlet

DispatcherServlet actúa como el controlador frontal para aplicaciones web basadas en Spring. Entonces, ¿qué es Front Controller ahora? Así que es bastante simple. Cada solicitud llega a nuestro sitio web, el controlador frontal viene primero y acepta todas las solicitudes y una vez que el controlador frontal acepta esa solicitud, es el trabajo del controlador frontal tomar una decisión sobre quién es el controlador adecuado para manejar esa solicitud. Por ejemplo, vea la imagen de abajo. Supongamos que tenemos un sitio web llamado estudiante.com y el cliente envía una solicitud para guardar los datos del estudiante haciendo clic en la siguiente URL”estudiante.com/save” y llega primero al controlador frontal y una vez que el controlador frontal acepta esa solicitud, se asignará al Cointroller_1, ya que este controlador maneja la solicitud para la operación /guardar. Luego enviará la respuesta al cliente.

DispatcherServlet Spring: cambie el nombre del archivo de configuración de contexto DispatcherServlet

En este articulo ¿Qué es Dispatcher Servlet en Spring? hemos visto que necesitamos crear un archivo de configuración de contexto DispatcherServlet en el src > principal > aplicación web > WEB INF† Y el nombre del archivo debe estar en este formato.

YourServeltName-servelt.xml

Pero que pasa si cambiamos el nombre de este formato a otro. ¿Podemos cambiar el nombre del archivo de configuración de contexto DispatcherServlet? Así que vamos a ver con un ejemplo.

Implementación: Proyecto

Configurando el proyecto

Observación: Vamos a utilizar Spring Tool Suite 4 IDE para este proyecto. Consulte este artículo para instalar STS en su computadora 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 de este enlace e ir a la src > principal > aplicación web > WEB-INF > lib carpeta y pasado 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.

Configurar el servlet del despachador

Etapa 4: Ahora ve a la src > principal > aplicación web > WEB-INF > web.xml archivo y aquí tenemos que configurar nuestro controlador frontal en un etiqueta, algo como esto.

<servlet>

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

</servlet>

Ahora digámosle a este servlet, hey servlet, necesitas manejar todas las solicitudes que llegan a nuestro sitio web 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>

Esto significa que el servlet «frontcontroller-dispatcher» manejará todas las solicitudes de student.com/anything, que podría ser student.com/save o student.com/get, lo que sea. Pero tiene que empezar con student.com. Así que hemos terminado de crear un Servlet Dispatcher.

Archivo: web.xml

XML

xml version="1.0" encoding="UTF-8"?>

<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>

<servlet-name>frontcontroller-dispatcher

servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet

servlet-class>

servlet>

<servlet-mapping>

<servlet-name>frontcontroller-dispatcher

servlet-name>

<url-pattern>/student.com/*

url-pattern>

servlet-mapping>

web-app>

Ahora ejecutemos nuestra aplicación. Para ejecutar su aplicación Spring MVC: haga clic derecho en su proyecto> Ejecutar como> Ejecutar en servidor y ejecute su aplicación como se muestra en la imagen a continuación.

dispatcher servelet 31 Spring: cambie el nombre del archivo de configuración de contexto DispatcherServlet

Y en este escenario, obtiene la siguiente excepción:

IOException parsing XML document from ServletContext resource [/WEB-INF/frontcontroller-dispatcher-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/frontcontroller-dispatcher-servlet.xml]
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:224)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:195)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)

Así que desde la primera línea puedes ver que es un java.io.FileNotFoundException lo que significa que Spring está buscando este archivo en particular frontcontroller-despachador-servlet.xml dentro de los INF WEB carpeta. Ahora vamos a crear este archivo.

Paso 5: Ahora ve a la src > principal > aplicación web > WEB INF y crea un archivo XML. Este es en realidad un archivo de configuración de Spring como el archivo Beans.xml. Y el nombre del archivo debe estar en este formato.

YourServeltName-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 en ese archivo.

Archivo: frontcontroller-despachador-servlet.xml

La estructura del archivo del proyecto se ve así:

estructura del proyecto

Paso 6: Ahora ejecuta tu aplicación de nuevo. Ahora en la consola puede ver que nuestro DispatcherServlet se inicializó con éxito y la inicialización se completó sin excepciones ni errores.

dispatcher servelet 2 Spring: cambie el nombre del archivo de configuración de contexto DispatcherServlet

¿Pero podemos darle otro nombre? Sí, puede, pero debe escribir las siguientes líneas de código si cambia el nombre del archivo de configuración de contexto de DispatcherServlet. Supongamos que cambiamos el nombre de frontcontroller-despachador-servlet.xml desagradable despachador-servlet.xml entonces deberíamos escribir algo como esto

<init-param>
     <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>

Explicación de salida:

es un parámetro estático que se almacena en el archivo web.xml. Si tiene datos que no cambian con frecuencia, puede almacenarlos en uno de ellos. Si desea almacenar ciertos datos que están limitados a un cierto alcance de servlet, puede utilizar. Todo lo que tienes dentro declare solo es accesible para ese servlet en particular. El parámetro init se declara en el etiqueta.

Por ejemplo, para este proyecto, podríamos escribir algo como esto:

<servlet>
      <!-- Provide a Servlet Name -->
    <servlet-name>frontcontroller-dispatcher</servlet-name>
    <!-- Provide a fully qualified path to the DispatcherServelt class -->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
    </init-param>
  </servlet>

Archivo: web.xml

XML

xml version="1.0" encoding="UTF-8"?>

<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>

<servlet-name>frontcontroller-dispatcher

servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet

servlet-class>

<init-param>

<param-name>contextConfigLocation

param-name>

<param-value>/WEB-INF/dispatcher-servlet.xml

param-value>

init-param>

servlet>

<servlet-mapping>

<servlet-name>frontcontroller-dispatcher

servlet-name>

<url-pattern>/student.com/*

url-pattern>

servlet-mapping>

web-app>

La estructura del archivo del proyecto modificado se muestra a continuación.

changetheconfigfilename Spring: cambie el nombre del archivo de configuración de contexto DispatcherServlet

Paso 7: Ahora ejecuta tu aplicación de nuevo. Ahora en la consola puede ver que nuestro DispatcherServlet se inicializó con éxito y la inicialización se completó sin excepciones ni errores.

dispatcher servelet 2 Spring: cambie el nombre del archivo de configuración de contexto DispatcherServlet

Su Calificación Nos Ayuda a Mejorar