问题请求:SpringMVC DispatcherServlet [/WEB-INF/applicationContext.xml]

MQZJ12345 2020-04-12 09:53:18
建立springmvc web项目。只有一个controller层,所以在项目的web.xml文件中,只配置 DispatcherServlet。
web.xml内容:
<!--springMvc容器-->
<servlet>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
但是在启动项目的时候,提示:java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]

虽然可以通过下面的方式解决问题,
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</context-param>

但是会导致spring-mvc.xml 加载两次,并非所想。求大神赐教。

ps:之前也搭建过单纯的springmvc项目,并未出现这个问题。spring版本都是 5.2.2.RELEASE 。

错误日志:
[DEBUG] localhost-startStop-1 org.springframework.context.support.AbstractApplicationContext.prepareRefresh(AbstractApplicationContext.java:595) 2020-04-12 21:37:21,908 53ms:Refreshing Root WebApplicationContext
[ERROR] localhost-startStop-1 org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:313) 2020-04-12 21:37:21,939 84ms:Context initialization failed
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]
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:345)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:305)
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:133)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:637)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:522)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:401)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:292)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]
at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:159)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:331)
... 21 more

pom文件内容如下:
<dependencies>
<!--log4j slf4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>

<!--json-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>

<!-- spring webmvc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
</dependencies>
...全文
220 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
MQZJ12345 2020-04-27
  • 打赏
  • 举报
回复
引用 3 楼 混口饭吃的程序员的回复:
难道不是扫描spring.xml嘛?spring.xml中引入application.xml,好久不用配置了,记得不是太清楚了
你说的是初始化spring容器的配置, 这个是初始化springmvc容器
程序员张同学 2020-04-24
  • 打赏
  • 举报
回复
难道不是扫描spring.xml嘛?spring.xml中引入application.xml,好久不用配置了,记得不是太清楚了
MQZJ12345 2020-04-23
  • 打赏
  • 举报
回复
引用 1 楼 世代农民的回复:
把springmvc.xml名字改成application.xml就可以了,上下文问题,springmvc默认全局上下文名字为application.xml
试了,不行。还是要写context-param标签。 一个单独的springmvc项目,是不需要写这个标签才对的
世代农民 2020-04-12
  • 打赏
  • 举报
回复
把springmvc.xml名字改成application.xml就可以了,上下文问题,springmvc默认全局上下文名字为application.xml

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧