Servlet中@WebServlet("XXXX")注解無效,訪問servlet報404錯誤


1、問題描述

  servlet使用注解配置,經檢查無錯誤,如圖: 

  

  tomcat正常啟動,頁面正常運行,當訪問servlet時出現無響應的情況,控制台報錯404,未訪問到servlet。

  

   經檢查,我的錯誤原因屬於下邊的第②種情況。

 

2、解決方案

打開web.xml檢查web-app標簽中的兩個屬性

①version是否大於3.0

  因為web-app標簽3.0以上版本才可以使用servlet的注解的,這是必要條件。如果web-app版本低於3.0,可以去tomcat的這個路徑:

  C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\ROOT\WEB-INF  找到web.xml文件,打開,檢查web-app標簽版本,如果大於等於3.0,直接復制一份替換原有web-app標簽就好了,或者直接用我的這個web-app標簽去替換,版本為3.1

 

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                   http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">

 

②metadata-complete是否為false  

  該屬性為true,則容器在部署時只依賴部署描述文件,忽略所有標注,如果不配置該屬性,或者將其設置為false,則表示啟動注解支持。當metadata-complete="false"時,web.xml和注解對於Servlet的影響同時起作用,兩種方法定義的url-partten都可以訪問到該Servlet,但是當通過web.xml定義的url-partten訪問時,注解定義的屬性將失效。所以如果你想用servlet注解來配置servlet的話,一定記得修改該屬性為metadata-complete="false "。

 

 

 

 

 


免責聲明!

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



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