2017-05-27 121 views
0

我是新來的Spring MVC,這些都是我的錯誤:Servlet映射無法正常工作

SEVERE: Context initialization failed 
 
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/spring-mvc-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/spring-mvc-servlet.xml] 
 
\t at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:344) 
 
\t at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) 
 
\t at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) 
 
\t at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) 
 
\t at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) 
 
\t at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) 
 
\t at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) 
 
\t at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 
 
\t at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:613) 
 
\t at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:514) 
 
\t at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) 
 
\t at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634) 
 
\t at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682) 
 
\t at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553) 
 
\t at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494) 
 
\t at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138) 
 
\t at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
 
\t at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183) 
 
\t at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) 
 
\t at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989) 
 
\t at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4931) 
 
\t at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5241) 
 
\t at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
 
\t at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) 
 
\t at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
 
\t at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
 
\t at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
 
\t at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
 
\t at java.lang.Thread.run(Thread.java:748) 
 
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/spring-mvc-servlet.xml] 
 
\t at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:141) 
 
\t at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330) 
 
\t ... 28 more 
 

 
May 27, 2017 1:13:50 AM org.apache.catalina.core.ApplicationContext log 
 
SEVERE: StandardWrapper.Throwable 
 
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/spring-mvc-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/spring-mvc-servlet.xml] 
 
\t at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:344) 
 
\t at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) 
 
\t at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) 
 
\t at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) 
 
\t at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) 
 
\t at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) 
 
\t at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) 
 
\t at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 
 
\t at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:613) 
 
\t at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:514) 
 
\t at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) 
 
\t at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634) 
 
\t at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682) 
 
\t at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553) 
 
\t at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494) 
 
\t at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138) 
 
\t at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
 
\t at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183) 
 
\t at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) 
 
\t at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989) 
 
\t at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4931) 
 
\t at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5241) 
 
\t at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
 
\t at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) 
 
\t at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
 
\t at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
 
\t at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
 
\t at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
 
\t at java.lang.Thread.run(Thread.java:748) 
 
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/spring-mvc-servlet.xml] 
 
\t at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:141) 
 
\t at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330) 
 
\t ... 28 more 
 

 
May 27, 2017 1:13:50 AM org.apache.catalina.core.StandardContext loadOnStartup 
 
SEVERE: Servlet [spring-mvc] in web application [/TooO] threw load() exception 
 
java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/spring-mvc-servlet.xml] 
 
\t at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:141) 
 
\t at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330) 
 
\t at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) 
 
\t at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) 
 
\t at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) 
 
\t at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) 
 
\t at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) 
 
\t at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) 
 
\t at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129) 
 
\t at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:613) 
 
\t at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:514) 
 
\t at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668) 
 
\t at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634) 
 
\t at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682) 
 
\t at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553) 
 
\t at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494) 
 
\t at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138) 
 
\t at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
 
\t at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183) 
 
\t at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099) 
 
\t at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989) 
 
\t at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4931) 
 
\t at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5241) 
 
\t at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
 
\t at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) 
 
\t at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
 
\t at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
 
\t at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
 
\t at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
 
\t at java.lang.Thread.run(Thread.java:748)

而且我的web.xml:


 
    <!-- Servlets --> 
 
    <servlet> 
 
\t <servlet-name>spring-mvc</servlet-name> 
 
\t <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
 
    \t <load-on-startup>1</load-on-startup> 
 
    </servlet> 
 
    <servlet-mapping> 
 
\t \t <servlet-name>spring-mvc</servlet-name> 
 
\t \t <url-pattern>/servlets/</url-pattern> 
 
    </servlet-mapping> 
 

我的spring-mvc-servlet.xml位於WEB-INF/servlets/spring-mvc-servlet.xml中

我不知道url-pattern在尋找什麼。對於url模式的路徑,它會是什麼?例如,在我的情況下,url-pattern會打印出什麼?它是WEB-INF/servlets /?

+0

直接將您的彈簧MVC-servlet.xml中到WEB-INF並重新啓動。 .. – Jan

+0

是的,這是一個工作,但我想我的servlet在servlet文件夾中,它會成功完成? –

回答

1

你需要移動你的配置文件。

見eror消息

Caused by: java.io.FileNotFoundException: 
    Could not open ServletContext resource [/WEB-INF/spring-mvc-servlet.xml] 

但你有它在WEB-INF/servlets/spring-mvc-servlet.xml就像你說的

將它移動到WEB-INF目錄下,並重新啓動 - 你至少應該看到新的錯誤消息

要你的「真正的」問題:

如果你使用spring,你不會創建servlet - 你創建控制器。然後,每個Controllers映射中給出的路徑將被給予Spring Servlet的URL映射作爲前綴。

所以像http://yourserver:8080/yourapp/servlet/doSomething

的URL可以解決這樣的:

yourapp - >告訴Servlet容器目標應用程序 的servlet - >告訴Spring,這是爲春天 DoSomething的 - >將在所有Spring控制器中執行查找,前提是它們中的某些匹配該URL模式(在Spring配置中!)

這是完全獨立於放置類文件的位置 - 類f爾斯爲此必須駐留在WEB-INF/classes中(或內罐在WEB-INF /庫)

好運

+0

我知道這會工作。但是我希望servlet中的servlet xml文件可以摺疊,可以以任何方式完成嗎? –

+0

看到我的編輯 - 但你的問題是完全問不同的東西 - 以及錯誤:-) – Jan