我自己不是 jsp/maven/java 开发人员,我正在尝试以通用方式为 web 应用程序配置错误页面,而不触及 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 中详细说明错误。我认为 scriptlet 就可以了,再次购买,我不知道该怎么做。 谢谢。
通配符不起作用。多么冗长啊,您确实需要单独定义感兴趣的状态代码。例如
<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
并将其放入请求范围中,最后将其显示在 <pre></pre>
中。