【❤️La solución definitiva❤️】No se pudo abrir el recurso ServletContext [/WEB-INF/dispatcher-servlet.xml]
Directorio de artículos
java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml] org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:159) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:333) org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:224) org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:195) org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:671) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:702) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:668) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:716) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:591) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:530) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:170) javax.servlet.GenericServlet.init(GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748)
1. Causas:
Como se mencionó anteriormente, después de iniciar Tomcat, el archivo de configuración Dispatcher-servlet.xml no se puede encontrar durante la inicialización del proyecto .
1.1 Problema de denominación del archivo de configuración
-
El nombre del servlet configurado en el archivo web.xml es diferente del nombre del archivo de configuración springmvc, simplemente modifíquelo para que sea el mismo.
Lo que se debe tener en cuenta aquí es que el nombre predeterminado es el valor de nombre-servlet -servlet.xml, por lo que debemos eliminar la parte "-servlet" después del despachador-servlet en la primera imagen, porque esta parte está ahí de forma predeterminada.
-
El archivo de configuración de springmvc es:
dispatcher-servlet.xml
-
La configuración del nombre del servlet es:
<servlet>
<servlet-name>dispatcher</servlet-name>//这里不能写成dispatcher-servlet,因为 -servlet是默认就有的!!!
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
1.2 Problema de inicio del contenedor Spring
-
Hay un problema con el inicio del contenedor Spring. El archivo de configuración de Spring para el inicio no está configurado.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
La configuración de mapeo de este archivo es obligatoria y el nombre no se puede personalizar.<param-name>contextConfigLocation</param-name>
2. Artículos de referencia
- "Acerca de la solución "No se pudo abrir el recurso ServletContext [/WEB-INF/applicationContext.xml]""
- "Resolviendo la excepción No se pudo abrir el recurso ServletContext [/WEB-INF/core-servlet.xml]"
- "Informe de errores para principiantes con springMVC: Servlet.init() para el servlet DispatcherServlet arrojó una excepción"