404錯誤的調試分析 - 運行JSP動態網頁Tomcat老是報404錯誤(詳解)__JSP

來源:互聯網
上載者:User

一、開發JSP動態網頁時,我們通過瀏覽器請求伺服器上的某個資源的時候,或許會經常遇到報404錯誤的bug。

       問題分析:出現這個bug的原因可能處在JSP網頁裡面,也可能是Servlet裡面。假如要訪問的資源不存在,就會產生404錯誤。

       (1)404錯誤可能是應用本身的問題。例如沒有正常部署、web.xml部署時Servlet名字寫錯了

       (2)也可能是檔案的問題,JSP檔案不存在、JSP名字打錯了,或者Servlet沒有配置



二、關於servlet配置參數url-pattern(Servlet路徑)的幾種不同標記法,或者講Servlet的幾種訪問方式,下面以代碼的形式展示並介紹:

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <display-name></display-name>  <servlet>    <servlet-name>TestServlet</servlet-name>    <servlet-class>com.ccsu.zlWeb.TestServlet</servlet-class>  </servlet>  <!-- 預設訪問,使用單個斜杠("/")作為url-pattern參數值 -->  <servlet-mapping>    <servlet-name>TestServlet</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping>  <!-- url-pattern參數值為[*.副檔名 ](副檔名是任意的)訪問  <servlet-mapping>    <servlet-name>TestServlet</servlet-name>    <url-pattern>/zl.ksgfj</url-pattern>  </servlet-mapping>-->  <!-- 路徑映射訪問,url-pattern參數值為[/*/*],"*"可取任意值  <servlet-mapping>    <servlet-name>TestServlet</servlet-name>    <url-pattern>/xdy/fhdsdjklf</url-pattern>  </servlet-mapping> -->  <!-- 精確匹配路徑訪問,url-pattern參數值為對應於web應用程式上下根的路徑  <servlet-mapping>    <servlet-name>TestServlet</servlet-name>    <url-pattern>/servlet/TestServlet</url-pattern>  </servlet-mapping>--><!-- 注意,採用預設訪問,需把此參數刪掉,另外還需把index.jsp也刪掉  <welcome-file-list>  <welcome-file>index.jsp</welcome-file>  </welcome-file-list> --></web-app>

三、404錯誤常見案集棉:


【1】url-pattern標籤/參數不對,此時查看tomcat的work\Catalina\localhost目錄,看不到該JSP編譯後的java源檔案和類檔案。如:

         "<url-pattern>/ShowContact</url-pattern>"誤寫成"<servlet-url>/ShowContact</servlet-url>"

(ps:一般的IDE工具中web.xml檔案都是在建立工程的時候自動產生的,然後Servlet配置也是在建立Servlet的時候自動產生的。也許有時候是我們自己在配置,又或許不小心改了點東西)


【2】web.xml配置Servlet的時候,Servlet的名字打錯了,與Servlet檔案的名字不一致(較為常見)


【3】web.xml配置Servlet的時候,servlet-class參數(應當是Servlet的完整類名)不對,即Servlet的類的完整路徑不對

        下面與大家分享一下擷取Servlet完整類名的捷徑:

         1、開啟需要配置Servlet的Servlet檔案,找到servlet類名(Public class修飾的)

         2、游標移到servlet類名上面,雙擊它(這時它會變顏色)

         3、然後滑鼠右擊,會出現一個下拉式功能表,點擊“Copy Qualified Name”(類似複製的操作)

        4、然後回到要配置其類路徑的地方,粘貼即可(其實現在任意地方粘貼都會出現該Servlet類的完整類名)。


(操作執行個體:雙擊某Servlet的檔案(ShowContact.java)的類名ShowContact ---> 滑鼠右擊它 ---> 點擊“Copy Qualified Name” ---> 粘貼。接下來就會出現該Servlet類的完整類名“cn.ccsu.web.ShowContact”,而不是該Servlet的名字了)


【4】web.xml中welcome-file-list未配置;或者配置了,但其中welcome-file的參數錯了。即其參數值*.jsp或者*.htm或者*.html的名字不對,與網頁檔案的名字不一致


【5】找不到資源,即檔案不存在(較為常見),即路徑中的資源名字不對,打錯了;或者該資源本來就沒有。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.