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
<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
|
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.
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í:
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.
¿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:
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
|
La estructura del archivo del proyecto modificado se muestra a continuación.
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.