JavaWeb前臺異常處理
在作Java Web程序時候,若是出錯了,經常會在頁面上打印出錯誤的堆棧內存信息,在開發階段對調試程序頗有幫助,可是在運營環境下,這樣的處理很不友好,非開發人員看了都會傻眼。
這裏給出一個簡單的處理方式,使用錯誤頁面來處理。
1、建立兩個常見的HTML錯誤信息頁面:
404.html
<
body
>
所訪問的資源不存在:對不起,所請求的資源不存在!
<
br
>
</body>
500.html
<
body
>
服務器內部錯誤:對不起,服務器忙!
<
br
>
</body>
2、配置web.xml
<?
xml
version
="1.0"
encoding
="UTF-8"
?>
<
web-app
version
="2.4"
xmlns
="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
<
servlet
>
<
description
>This is the description of my J2EE component
</
description
>
<
display-name
>This is the display name of my J2EE component
</
display-name
>
<
servlet-name
>ErrServlet
</
servlet-name
>
<
servlet-class
>lavasoft.errtest.ErrServlet
</
servlet-class
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>ErrServlet
</
servlet-name
>
<
url-pattern
>/servlet/ErrServlet
</
url-pattern
>
</
servlet-mapping
>
<
welcome-file-list
>
<
welcome-file
>index.jsp
</
welcome-file
>
</
welcome-file-list
>
<
error-page
>
<
error-code
>404
</
error-code
>
<
location
>/404.html
</
location
>
</
error-page
>
<
error-page
>
<
error-code
>500
</
error-code
>
<
location
>/500.html
</
location
>
</
error-page
>
</
web-app
>
3、建立一個測試的Servlet,用來拋500錯誤的用的,呵呵。
package lavasoft.errtest;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public
class ErrServlet
extends HttpServlet {
public
void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(
"text/html");
throw
new RuntimeException(
"------");
}
}
4、測試
一、當訪問不存在的資源時候,服務器會返回404錯誤狀態,這樣會自動轉向404對應的錯誤頁面404.html,將其發送給客戶端。
二、當服務器處理錯誤時候,會返回500錯誤狀態碼,這樣自動轉向500對應的錯誤頁面500.html,將其發送給客戶端。
這樣,不費多大勁,就把異常的不友好問題解決了!
固然,這僅僅是最簡單的最懶惰的一種處理方式,還有一種方式值得推薦:那就是在有好提示的頁面不直接顯示錯誤堆棧信息,只有當請求查看錯誤詳細信息時候才點擊才顯示出來,這個效果是經過js實現的。