转载地址:http://www.liuzhaocn.com/?p=1153
用尽各种办法,最管用的还是下面这一种。
优点:
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:多次事实证明,要解决技术问题,度娘还是不给力。
推荐几个网址:
http://www.avajava.com/tutorials/lessons/how-do-i-create-a-jsp-error-page-to-handle-exceptions.html?page=1
http://www.avajava.com/tutorials/lessons/how-do-i-create-a-jsp-error-page-to-handle-particular-error-codes.html?page=1
https://struts.apache.org/docs/home.html