Struts2自定義404、500錯誤界面
用盡各種辦法,最管用的還是下面這一種。
優點:
1、404、500都能正確跳轉。包括找不到Action、找不到ActionMethod、throw Exception、Throwable。
2、500可輸出錯誤信息。
3、與sitemesh整合沒有問題。
4、可替換Struts2和Tomcat的錯誤頁面。做到真正自定義。
配置:
Web.xml
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsp</location>
</error-page>
404頁面可為靜態的頁面,沒有錯誤信息,可自定義。
500頁面如下:
<%@ page language=”java” contentType=”text/html; charset=UTF-8″ pageEncoding=”UTF-8″%>
<%@ page isErrorPage=”true” import=”java.io.*”%>
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>
<%@ taglib uri=”http://java.sun.com/jsp/jstl/fmt” prefix=”fmt” %>
<%@ taglib prefix=”s” uri=”/struts-tags”%>
Message:
<%=exception.getMessage()%>
StackTrace:
<%
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
exception.printStackTrace(printWriter);
out.println(stringWriter);
printWriter.close();
stringWriter.close();
%>
以上頁面都可以自己美化。
———————–
自己還試過的方法有:
1、struts2的聲明式錯誤處理。
2、通過default-action-ref的作用來檢測找不到的action,從而跳轉到404頁面。
以上兩種方法都不好。第一種方式比較繁瑣,而且有些錯誤捕獲不到。第二種只能用於action,其他資源不能用。
<package name=”default” extends=”struts-default”>
<default-action-refname=”notFound”/>
<global-results>
<resultname=”error500″>/WEB-INF/pages/error500.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mappingresult=”error500″exception=”java.lang.Exception”></exception-mapping>
</global-exception-mappings>
<actionname=”notFound”>
<result name=”success” type=”redirect”>
<param name=”location”>error404.jsp</param>
</result>
</action>
</package>
PS:多次事實證明,要解決技術問題,度娘還是不給力。