解決Invalid servletDemo in servlet mapping 問題


  在學習Servlet時,啟動tomcat服務時報錯日志如下

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/servlet]]
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:188)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1119)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/servlet]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
    ... 6 more
Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> servletDemo in servlet mapping
    at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3410)
    at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3385)
    at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1438)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1355)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:887)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:387)
    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:5503)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
    ... 6 more

    檢查web.xml配置文件並未發現有哪里配錯。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
 3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 4         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee                       
 5                             http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 6 
 7   <servlet>
 8           <servlet-name>servletDemo</servlet-name>
 9           <servlet-class>com.xzp.servlet.ServletDemo</servlet-class>
10   </servlet>
11   <servlet-mapping>
12           <servlet-name>servletDemo</servlet-name>
13           <url-pattern>/*</url-pattern>
14   </servlet-mapping>
15   
16 </web-app>

    查看Servlet應用程序demo,發現注解@WebServlet的urlPatterns 配置有誤。

 1 @WebServlet(urlPatterns = "servletDemo")
 2 public class ServletDemo extends HttpServlet {
 3     //初始化方法
 4     @Override
 5     public void init() throws ServletException {
 6         System.out.println("初始化");
 7         super.init();
 8     }
 9     //執行get請求的業務處理
10     @Override
11     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
12         System.out.println("執行get請求");
13         super.doGet(req, resp);
14     }
15     //執行post請求的業務處理
16     @Override
17     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
18         System.out.println("執行post請求");
19         super.doPost(req, resp);
20     }    
21     //銷毀
22     @Override
23     public void destroy() {
24         System.out.println("銷毀");
25         super.destroy();
26     }
27 }

    解決辦法:

    @WebServlet(urlPatterns = "servletDemo")   改為   @WebServlet(urlPatterns = "/servletDemo")。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM