2017-05-27 112 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