jboss下webapp中的常规错误页面

时间:2010-06-09 14:37:04

标签: java jsp struts

我自己不是jsp / maven / java开发人员,我试图以通用的方式为webapp配置错误页面,而不涉及jboss的配置。

以下是我试图这样做的方式: 在我的web.xml中,我已经设置了

    <error-page>
        <error-code>*</error-code>
        <location>/actions/erreur</location>
    </error-page>

在这里,我怀疑使用'*'的作品,但这就是示例。 然后,在我的strut-config.xml

    <action path="/erreur" forward="erreurView" />

最后在我的tiles-def.xml中:

<!-- ERREURS  -->
<definition name="erreurView" extends=".formPremiereConnexionLayout">
    <put name="titrePage" value="Erreur"/>  
    <put name="body" value="/jsp/erreurs.jsp"/>
</definition>

如果您有合适的答案,请理解,感谢您的帮助。

最后一件事:即使任何服务器错误代码发送到一般错误视图,我想详细说明jsp中的错误。我认为一个小脚本会很好,再次买入,我不知道如何这样做。 谢谢。

1 个答案:

答案 0 :(得分:5)

通配符不起作用。多么详细,您确实需要单独定义感兴趣的状态代码。 E.g。

<error-page>
    <error-code>403</error-code>
    <location>/actions/erreur</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/actions/erreur</location>
</error-page>
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/actions/erreur</location>
</error-page>
...

最后一个侦听服务器可能抛出的所有exceptions / errors。但是,您无法确定它是否会显示在java.lang.Error上。

在错误页面中,您可以从请求范围和标题中获取重要的详细信息,如下所示:

<p>Request URI: <c:out value="${requestScope['javax.servlet.forward.request_uri']}" /></p>
<p>Exception type: <c:out value="${requestScope['javax.servlet.error.exception']}" /></p>
<p>Exception message: <c:out value="${requestScope['javax.servlet.error.message']}" /></p>
<p>HTTP status code: <c:out value="${requestScope['javax.servlet.error.status_code']}" /></p>
<p>HTTP user agent: <c:out value="${header['user-agent']}" /></p>

如果你想打印堆栈跟踪,你必须在servlet / beanclass中编写它,将它写入String并将其放入请求范围,最后将其显示在{{ 1}}。