一直使用tomcat,今天想到一個問題,自定義404錯誤頁面, 為了獲得很好的用戶感受,是不應當向用戶暴露404這樣的頁面的, 問題的出發點是我在Struts2中定義錯誤頁面, 在Struts2中是這樣定義的:
<default-action-ref name="pagenotfound"></default-action-ref> <action name="pagenotfound"> <result>/pagenotfound.html</result> </action>
這就是說在訪問action是.如果沒有找到action就訪問這個頁面,但是我如果我不用.do或者.action的樣式,而直接使用.jsp或者.html的方式來訪問頁面的請,struts就不會處理了.結果是404錯誤依然出現.
現在已經不是struts的處理范圍了,那么這應當是應用的處理范圍,經查證,在工程的web.xml中可以設置自定義錯誤頁面,設置如下:<error-page> <error-code>404</error-code> <location>/pagenotfound.html</location> </error-page>
現在再訪問該該工程下面一個不存在的頁面,將跳轉到自定義的pagenotfound頁面,這樣,struts中的那個default-action-ref 配置是可以去掉的了.因為404交給tomcat處理了.
然后,然后我輸入http://localhost/asdfasdfafd一個不存在的地址,結果404依然出現,
回頭想一下,剛才我們的web.xml是在某一個應用下面的,他處理的應當是本應用的404,而http://localhost/訪問的是tomcat自已的應用,那么這個web.xml配置就應當在webapp/Root/下面的應用來配了,Root目錄下面放著Tomcat的應用,把里面換成自已的就行了.
于是現在再進行輸入不存在的地址,成功跳向自定義的錯誤頁面.Tomcat中404/500 錯誤,自定義錯誤頁面
當服務器出現404、500錯誤時候希望能夠給用戶友好的現實界面
只需要在項目的web.xml中添加一些配置<error-page><error-code>404</error-code><location>/NotFound404.jsp</location></error-page> <error-page><error-code>500</error-code><location>/NotFound500.jsp</location></error-page>
這樣當你在訪問不存在的頁面出錯的頁面時就自動顯示剛才指定的頁面了
<!-- 400錯誤 --><error-page><error-code>400</error-code><location>/error.jsp</location></error-page><!-- 404 頁面不存在錯誤 --><error-page><error-code>404</error-code><location>/error.jsp</location></error-page><!-- 500 服務器內部錯誤 --><error-page><error-code>500</error-code><location>/error.jsp</location></error-page><!-- java.lang.Exception異常錯誤,依據這個標記可定義多個類似錯誤提示 --><error-page><exception-type>java.lang.Exception</exception-type><location>/error.jsp</location></error-page><!-- java.lang.NullPointerException異常錯誤,依據這個標記可定義多個類似錯誤提示 --><error-page><exception-type>java.lang.NullPointerException </exception-type><location>/error.jsp</location></error-page><error-page><exception-type>javax.servlet.ServletException</exception-type><location>/error.jsp</location></error-page>
具體的如下:
新聞熱點
疑難解答