xml配置的问题会引起各种组合错误,少一项就会错。
Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]
这种错误的时候可能就是因为少了
<context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/spring/spring-sevlet.xml</param-value> </context-param>
,因为我把它注释掉了,就会出现以上错误。
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/springmvc-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]
出现这种错误可能就是因为找不到spring-sevlet.xml配置,因为会默认去resources文件夹下面去找
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--<init-param>--> <!--<param-name>contextConfigLocation</param-name>--> <!--<param-value>WEB-INF/spring/spring-sevlet.xml</param-value>--> <!--</init-param>--> <load-on-startup>1</load-on-startup> </servlet>
由于我把init-param注释掉了,只能去默认路径下面去找了。现在我将它放开以后,就能在init的时候指定配置文件路径
spring-sevlet全部配置如下
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/spring/spring-sevlet.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/spring/spring-sevlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
比较疑惑的是,我context-parm也指定过了,还需要在servlet的init-param里面去指定。