可以自動跳轉到出錯頁面的servlet jsp框架

2021-03-31 08:56:29 字數 1561 閱讀 9963

jsp有乙個指令可以定義jsp的錯誤頁面,並在此jsp頁面出錯時跳轉到該頁面輸出出錯

日誌。如下的例子:

<%@ page errorpage="errorpage.jsp" %>

errorpage.jsp的**如下所示:

.....

<%@ page iserrorpage="true" %>

....

//輸出出錯日誌

<%= exception.getmessage() %>

但是,這只能在jsp頁面層控制。在j2ee的實現中,很多的情況是jsp往往只作為頁面顯

示,與業務相關的資料庫操作都是在後台的servlet執行,處理完畢之後再跳轉某個jsp顯示

頁面。這種設定框架,實現了mvc結構,使得整個系統的維護難度大大降低。

實際的工作中,儘管系統採用了以上的設定框架,但由j2ee開發人員水平以及程式設計的習

慣都有可能不通,經常會遇到開發人員在servlet中對有可能報錯的地方處理不恰當。最常

見的一種情況是,catch乙個exception e,然後僅僅呼叫e.printstacktrace()。這樣造成

的後果非常嚴重。一旦有exception發生,web頁面會出現白屏,我們可以從兩方面來看:

(1)如果是使用的使用者。他往往會不知所措,並且有可能還不知道有錯誤發生,繼續使用

系統,但這時候的系統已經出錯了,在錯誤的基礎上繼續業務流程,往往會造成更多系統級

別的錯誤。

(2)如果是開發人員。使用者反映了這個出錯,但是不知道出錯原因。只能說出現要白屏。

開發人員需要除錯抓錯的話,非得到應用伺服器的輸入端檢視出錯日誌,定位可能出錯的原

因,再進行排錯。

在此,我介紹一種有效的servlet出錯處理機制,這種機制將所有exception的出錯內容

丟擲到web頁面,讓使用使用者立即有錯誤發生,並可以及時將該出錯內容提交給開發人員定

位出錯原因。

其實,這種機制非常簡單。思路是定義乙個抽象的baseservlet基類,它繼承httpservlet。

並增加乙個抽象的 abstract public void doworkflow(httpservletrequest request,httpservletresponse response)

的方法,這個方法是所有baseservlet子類都必須且僅需實現的方法。baseservlet基類當然要實現service方法 -- public final void service(httpservletrequest request,httpservletresponse response)

。它的**片斷如下:

}errorservlet.jsp非常簡單。**片斷如下:

....

//輸出出錯日誌

<%= request.getattribute("err_msg") %>

jsp跳轉到本身頁面 JSP頁面的五種跳轉方法

requestdispatcher.forward 是在伺服器端起作用,當使用forward 時,servlet engine傳遞http請求從當前的servlet or jsp到另外乙個servlet,jsp 或普通html檔案,也即你的form提交至a.jsp,在a.jsp用到了forward ...

jsp跳轉到本身頁面 JSP頁面的五種跳轉方法

是在伺服器端起作用,當使用forward 時,servletengine傳遞http請求從當前的servletorjsp到另外乙個servlet,jsp或普通html檔案,也 即你的form提交至a.jsp,在a.jsp用到了forward 重定向至b.jsp,此時form提交的所有資訊在b.jsp...

token過期自動跳轉到登入頁面

這幾天專案提測,測試給我提了個bug,說token過期,路由應該自動跳轉到登陸頁面,讓使用者重新登入。先說下一些前置條件,1 我公司的token時效在生產環境設定為乙個小時,當token過期,所有介面都直接返回 2 每次路由跳轉都會對token進行判斷,設定了乙個全域性的beforeeach鉤子函式...