jboss下webapp中的通用错误页面

发布于 2024-09-05 17:02:40 字数 836 浏览 2 评论 0原文

我自己不是 jsp/maven/java 开发人员,我正在尝试以通用方式为 web 应用程序配置错误页面,而不触及 jboss 的配置。

我正在尝试这样做: 在我的 web.xml 中,我设置了

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

Here,我怀疑使用 '*' 是否有效,但这只是示例。 然后,在我的 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 中详细说明错误。我认为 scriptlet 就可以了,再次购买,我不知道该怎么做。 谢谢。

Not a jsp/maven/java dev myself, i'm trying to configure error pages in a generic way, for a webapp, without touching jboss's configuration.

Here's how i'm trying to do so:
in my web.xml, i've set up

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

Here, I doubt using '*' works, but that's for the example.
Then, in my strut-config.xml

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

And finally in my tiles-def.xml:

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

You get the idea, if you have an appropriate answer, thanks for the help.

One last thing : even though any server error code send to a generic error view, i'd like to detail the error in the jsp. I think a scriptlet would do fine, buyt once again, I have no idea on how to do so.
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦罢 2024-09-12 17:02:40

通配符不起作用。多么冗长啊,您确实需要单独定义感兴趣的状态代码。例如,

<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>
...

最后一个侦听所有 异常/服务器可能抛出的错误。但是您无法确定它是否会显示在 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 并将其放入请求范围中,最后在

 中显示。

The wildcard wouldn't work. How verbose, you really need to define the status codes of interest separately. 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>
...

The last one listens on all exceptions/errors the server could throw. However you can't be sure if it will ever be displayed on a java.lang.Error.

Inside the error page you can get the important details from the request scope and headers like so:

<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>

If you want to print the stacktrace as well, you'll have to prepare this inside a servlet/beanclass by writing it to a String and putting it in the request scope and finally display it in a <pre></pre>.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文