idea部署web項目,能訪問jsp,訪問Servlet卻出現404錯誤的解決方法匯總,親測有效


 


  近期在跟着打一個javaweb項目的時候,自己搭建Tomcat環境之后,訪問jsp頁面之后跳轉訪問Servlet資源時卻出現404錯誤,如下圖:

  通常的話出現404錯誤肯定是先檢查自己的訪問路徑有沒有寫對,我檢查后我這個路徑是沒有錯的,代碼邏輯也是沒問題的(因為是照着培訓視頻打的,同時也有把培訓視頻的代碼替換我的代碼也是運行不了),於是我就開始在網上搜索解決方案了,以下是我在網上搜到的解決方案以及自己的一點片面見解,因為別人實力較菜,寫這篇文章也只是想着分享一下自己的解決方法,在說的過程中如果有錯誤的話,歡迎大家指出來,以免我誤導別人O(∩_∩)


 

一.servlet版本與tomcat版本不對應

  這個問題真的很致命,因為我自己問題就是出現在這(我承認自己是有點弱智...),我用的Tomcat版本是8.5.x,然后一直用的是4.0的Servlet版本(版本得對應上,不過我之前沒對應上的時候好像也可以運行Servlet),這一次做的項目用到了EL表達式,終於在這一次出現問題了,在網上找了那么多方案,兜兜轉轉原來是出現在這里,於是我重新創建了JavaEE7的項目,選擇了3.1版本(我這個項目采用的是注解配置),后來重新布置了下環境,就能運行了

    

 

  這里我也給出我在網上搜到的Servlet和Tomcat對應版本的表

 

ervlet Spec JSP Spec EL Spec WebSocket Spec JASPIC Spec Apache Tomcat version Actual release revision Supported Java Versions
4.0 TBD (2.4?) TBD (3.1?) TBD (1.2?) 1.1 9.0.x 9.0.0.M9 (alpha) 8 and later
3.1 2.3 3.0 1.1 1.1 8.5.x 8.5.4 7 and later
3.1 2.3 3.0 1.1 N/A 8.0.x (superseded) 8.0.35 (superseded) 7 and later
3.0 2.2 2.2 1.1 N/A 7.0.x 7.0.70 6 and later
(7 and later for WebSocket)
2.5 2.1 2.1 N/A N/A 6.0.x 6.0.45 5 and later
2.4 2.0 N/A N/A N/A 5.5.x (archived) 5.5.36 (archived) 1.4 and later
2.3 1.2 N/A N/A N/A 4.1.x (archived) 4.1.40 (archived) 1.3 and later
2.2 1.1 N/A N/A N/A 3.3.x (archived) 3.3.2 (archived) 1.1 and later

(表格來源於https://blog.csdn.net/zzy7075/article/details/61918776?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase


 

二.注解方式的WebServlet配置錯誤

  這個錯誤也是很多新人比較容易犯的錯誤了,采用注解配置的話,idea自動生動的Servlet的模板是

  @WebServlet( name="類名")

  但其實這樣並沒有配置好路徑,我們可以將其改為以下兩種方式

  ①@WebServlet( name="類名",urlPatterns="/路徑")

  舉例:@WebServlet( name="UserListSerlvet",urlPatterns="/userListServlet")

  ②@WebServlet( value="/路徑")  ,此處value要是只有一個可以省略

  舉例:@WebServlet( "/userListServlet")

  上面的斜杠千萬不能落下


  這里開始就說我在網上看到別人出現這個錯誤,幾個比較有代表性的解決方法

三.未能正確部署Web項目到Tomcat上

  (解決方法來源於https://blog.csdn.net/eaphyy/article/details/72513914

  1首先,右擊項目,點擊 open module settings  

    

  2.配置 project,主要是本地 jdk 的安裝路徑,還有項目編譯輸出的路徑

  

 

  3.配置 modules ,其中 paths 定位到 web-inf/classes ;dependencies 加入jdk和項目 web-inf/lib(其實這里默認選擇就可以)

      

 

 

 

 

 

  4.配置 libraries ,點擊 + 號,選擇 java ,然后還是選擇你項目的 web-inf/lib

  

 

 

   5.配置 facets ,此步很重要,配置 web resource directories ,路徑配錯,就會報 404 ,一定要定位到項目根目錄,也就是下面有整個項目源碼的地方(這里的話我一開始也有犯了這個錯誤,因為在項目里面新建個模板,然后也不知道為什么路徑會定位到別的地方,所幸最后改過來)

    

 

  下圖是我引用的博主他犯的錯誤

  博主原話:“本人就是定位到了另一個地方,導致 404,本來應該到 webroot,結定位到了 web”

  

 

   6.配置 artifacts ,此步選擇第二個,選擇你的項目即可

  

 

 

  7、部署到 tomcat,“Run”中的“Edit Configurations...”

    

        

    

 

 

  (這里其實設置了Deployment的時候前面基本會默認幫我們修改)

 

 


 

 

 四.文件放置到錯誤位置(非idea)

  博文鏈接:https://blog.csdn.net/eickandy/article/details/78202047?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1

  在網上搜索的時候看到了這篇文章,我覺得也應該是比較有效的解決方法,下面的評價都還不錯,但看他里面說的那些文件夾的名字好像是用eclipse編輯才會產生的文件名,因為我用的是idea,所以這里就不多闡述,用eclipse的朋友可以去看一下(不過因為這篇文章已經過了兩年多了,效果我也不太敢保證,就是在我看到的那一些文章中比較有代表性的吧)。


 

五.未能正確的配置web.xml文件

  這里的話針對的是用web.xml配置訪問目錄的,這里的話其實要是知道怎么配置基本不會出現這個問題,不過要是編輯錯的話確實會出現404錯誤,這里就稍微提一下

 

1 <servlet>   
2     <servlet-name>HWS</servlet-name>       <!--給serverlet取名字,可任意-->
3     <servlet-class>com.web.servlet.HelloWorldServlet</servlet-class>   <!--指明servlet路徑包名+類名,也就是全類名-->
4 </servlet>    
5 <servlet-mapping>   
6     <servlet-name>HWS</servlet-name>       <!--對應上面的名字-->
7     <url-pattern>/hws</url-pattern>   <!--這是在瀏覽器中輸入訪問這個servlet的資源定位符,可任意,注意斜桿-->
8 </servlet-mapping> 

 

  這里最后也給出Servlet的一些規范吧

 

  JAVA servlet 2.x規范:
    項目目錄結構必須要有WEB-INF,web.xml等文件夾和文件
    在web.xml中配置servlet,filter,listener,以web.xml為java web項目的統一入口


  JAVA servlet 3.x規范:
    項目中可以不需要WEB-INF,web.xml等文件夾和文件
    在沒有web.xml文件的情況下,通過注解實現servlet,filter, listener的聲明,例如
    @WebServlet, @WebFilter,@WebListener,當使用注解時,容器自動進行掃描。

(原文鏈接:https://blog.csdn.net/m0_38059795/article/details/78694177


 

   Servlet3.1規范:https://www.cnblogs.com/heartstage/archive/2013/10/10/3362138.html

   Servlet4.0規范:https://www.ibm.com/developerworks/cn/java/j-javaee8-servlet4/index.html?ca=drs-&utm_source=tuicool&utm_medium=referral


 

 

  這篇文章是我花了比較多時間整理出來的吧,原創內容也不多,主要也是說想分享出來給那些同樣出現這個問題的朋友參考下,當然可能不一定能解決您的疑惑╮(╯▽╰)╭,最后也再啰嗦一句,因為本人實力較菜,所以如果這篇文章里面有說得不對的地方,也希望大家能指出來,我也不想誤導大家。

 


免責聲明!

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



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