eclipse 中新建的Dynamic Web Project 3.0之后无web.xml中Servlet的配置问题

在eclipse 中新建Dynamic Web Project时如果之间点击finish,项目中会没有web.xml,但是不会影响本地的项目运行,如果需要web.xml则需要在新建时点击next,最后勾选生成web.xml。



那么没有web.xml,servlet的对应关系在哪呢?我今天就遇到了这样的问题,将本地的项目部署到服务器上时,报找不到servlet的错误,所以需要考一个web.xml到WEB-INF下,并且在下面添加servlet的映射关系:


  
  
  1. <servlet>
  2. <servlet-name> <span style="color:#ff0000;">Sevlet1 </span> </servlet-name>
  3. <servlet-class> <span style="color:#3333ff;">com.Sevlet </span>.InfoSevlet </servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <servlet-name> <span style="color:#ff0000;">Sevlet1 </span> </servlet-name>
  7. <url-pattern>/InfoSevlet </url-pattern>
  8. </servlet-mapping>
上面是一个servlet的配置:红色的地方是可以随便起的一个名字,但是<servlet>标签中的和<servlet-mapping>中的要一致,蓝色部分是servlet所在的包名(包名.servlet).但是重启tomcat之后报如下错误:

org.apache.catalina.LifecycleException:<span style="color:#ff0000;"> Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/InfoManager]]</span>
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:586)
	at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1750)
	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: <span style="color:#ff0000;">The servlets named [Sevlet1] and [com.Sevlet.InfoSevlet] are both mapped to the url-pattern [/InfoSevlet] which is not permitted</span>
	at org.apache.tomcat.util.descriptor.web.WebXml.addServletMapping(WebXml.java:308)
	at org.apache.catalina.startup.ContextConfig.processAnnotationWebServlet(ContextConfig.java:2342)
	at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2024)
	at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1918)
	at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1913)
	at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1913)
	at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1139)
	at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:771)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:305)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5066)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	... 10 more

十一月 04, 2016 7:59:39 下午 org.apache.catalina.startup.HostConfig deployDescriptor
严重: Error deploying configuration descriptor D:\eclipse\work.metadata.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost\InfoManager.xml
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/InfoManager]]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:586)
at org.apache.catalina.startup.HostConfig D e p l o y D e s c r i p t o r . r u n ( H o s t C o n f i g . j a v a : &lt; s p a n c l a s s = &quot; h l j s n u m b e r &quot; &gt; 1750 &lt; / s p a n &gt; ) a t j a v a . u t i l . c o n c u r r e n t . E x e c u t o r s DeployDescriptor.run(HostConfig.java:&lt;span class=&quot;hljs-number&quot;&gt;1750&lt;/span&gt;) at java.util.concurrent.Executors RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)网上查了好久才知道原因如下:


新建servlet时它会自动加一个url-pattern声明,所以才会在没有web.xml中配置信息的情况找到对应的servlet。

这样如果你在web.xml中再加上映射关系的话就会重复。所以删除servlet里的声明即可。


猜你喜欢

转载自blog.csdn.net/weixin_43495390/article/details/85159280
今日推荐