文章出處
![](http://images2015.cnblogs.com/blog/12617/201510/12617-20151020191114599-746149857.jpg)
由于jsp終究是要轉換為servlet的java文件,然后再編譯為.class文件,最后才執行,那么在這過程的任何一個步驟都可能有問題,主要包括三個方面,下面逐一分析:
一、JSP轉換為Servlet的java源碼時
因為上面的這個jsp轉java、再轉class的過程是在運行期執行來做的,也就是客戶第一次請求該jsp頁面的時候做的,所以如果jsp頁面中有語法錯誤,使得容器不知如何把jsp轉換為servlet的java文件時,比如
<%@page contentType="html/text" buffer="16" %>
這里指定buffer的語法有誤,應該包含單位,如果客戶請求該頁面,就會出現類似如下的錯誤,從異常信息可以定位到錯誤源碼的位置。
![](http://images2015.cnblogs.com/blog/12617/201510/12617-20151020191114599-746149857.jpg)
初學者應該盡量選用具有jsp語法檢查功能的開發工具來做開發。
二、將servlet源碼編譯為.class文件的時候
比如在jsp中使用了某個類,但是在部署服務器上忘了放該類的jar包了,這樣在初次請求該jsp的時候,雖然該jsp可以轉譯完成,但是編譯時會報錯,比如在tomcat中會有類似于下面的錯誤提示,這個錯誤比較容易人, 使用tomcat的時候,如果出現unable to compile,就是編譯期的錯誤。
![](http://images2015.cnblogs.com/blog/12617/201510/12617-20151020191116302-2010782548.jpg)
三、Servlet載入容器進行服務的時候發生錯誤。
此時Servlet已經編譯成功了,但是在運行時由于某種未捕獲的異常,比如NullPointerException就是最常見的錯誤。
一般來說這種錯誤會在界面上表現為an exception occured processing jsp page。這種一般就是運行時錯誤。
四、錯誤處理
如果jsp頁面不做處理,那么容器就會捕捉這些異常,讓像上面這樣顯示出來。
如果我們想要針對某個頁面,或者針對某個特殊類型的異常做處理,則可以在jsp頁面和web.xml文件中做一些配置,下面僅給出兩個例子,不想詳細展開說》
1)指定頁面發生錯誤時,轉到另外一個錯誤處理頁面 errorPage, isErrorPage配合使用
![](http://images2015.cnblogs.com/blog/12617/201510/12617-20151020191118302-1089819111.jpg)
....
![](http://images2015.cnblogs.com/blog/12617/201510/12617-20151020191120286-316518750.jpg)
2)在web.xml文件中配置,指定異常發生時
![](http://images2015.cnblogs.com/blog/12617/201510/12617-20151020191121724-199631441.jpg)
3)指定html錯誤碼發生時
![](http://images2015.cnblogs.com/blog/12617/201510/12617-20151020191122349-865666947.jpg)
![]() |
不含病毒。www.avast.com |
全站熱搜