[Jsp技巧]看到錯誤碼?找到Exception位置呢?

剛開始學習jsp時,看到了Exception就一個頭二個大,因為好像跟一般Java出現錯誤的表示方式不一樣,Exception的訊息寫的錯誤行數,總跟jsp裡的行數不太一樣?這樣子就不好判斷Exception產生在那裡,進而修改了!

其實不然,在執行jsp網頁時web-server會把jsp檔先轉換成java檔,再由java檔編譯成class檔,所以要找出錯誤的地方就只需要找到java檔的所在,就可以了。

範例使用的環境是tomcat,Exception直接向網頁丟出,會看大概如下的畫面

errorcheck4.png

可以看到錯誤是java.lan.NullPointException,就是有null的空指標錯誤(翻的不好,應該不能叫指標,java沒有指標)

錯誤訊息由圖上方至圖下面,一個程式一個程式向上丟出的錯誤訊息,也就是說org.apache.jsp_connect_jsp.jspService向org.apache.jasper.runtime.HttpJspBase.service丟出它的錯誤,而org.apache.jasper.runtime.HttpJspBase.service再向javax.servlet.http.HttpServlet.service丟出錯誤,以此類推。

找connect_jsp.java:136行,出NullPointException的地方在connect.jsp這隻程式的第136行,其它列的訊息,因為是系統程式,應該不是真的錯誤來源。

errorcheck7.png

java的package結構,如org.apache.jsp ,也是目錄結構。

所以到tomcat目錄下的work\Catalina\localhost\0502\org\apache\jsp裡找到connect_jsp.java這程式,用記事本打開它。

ps.其中Catalina\localhost是預設的目錄,如果有更改config/server.xml內容,有可能會路徑不同。

ps.0502是網頁的子目錄,例如http://localhost:8080/0502/

errorcheck5.png

找到第136號錯誤的地方

errorcheck6.png

result = stmt.executeQuery(qq);這行有NullPointException,再來只要解決這個錯誤就可以了。

errorcheck8.png

發表迴響