【问题标题】:Detect exceptions in JSP page via RequestDispatcher通过 RequestDispatcher 检测 JSP 页面中的异常
【发布时间】:2011-01-05 19:21:49
【问题描述】:

我有一个指定了错误页面的 JSP 页面。我通过以下方式从 servlet 调用页面:

RequestDispatcher rd = ctx.getRequestDispatcher( jspPage );
rd.include( req, res );

如何检测jsp页面是否转发到错误页面?我想以不同的方式处理异常,但没有抛出异常。不幸的是,我无法修改 JSP 页面本身或错误页面。

编辑:

我在想这样的事情可能会在 include() 行之后起作用,有什么想法吗?

Object errorServletName = req.getAttribute( "javax.servlet.error.servlet_name" );
if ( errorServletName != null ) 
{ there was an error in the JSP... }

【问题讨论】:

  • 你想在哪里检测到这个?在给定示例中的include() 行之后?为什么你的 JSP 会抛出异常?这表示使用scriptlets... 您是否意识到显示错误页面可能为时已晚? IE。当它在响应已经提交时抛出异常。无论如何,您可以更改web.xml 中的<error-page> 条目吗?如果是这样,那就是答案。
  • 我想在示例中的 include() 行之后检测它。 JSP 页面有一个指定的errorPage,因此当出现异常时它会跳转到error.jsp,这通常很好。但是在 include() 行之后,我需要做一个 res.getContents() 并对输出进行其他处理......并且我需要将错误页面输出作为一种特殊情况来处理,所以我希望有一种方法检测它是否被转发到错误页面。希望澄清...

标签: java jsp servlets


【解决方案1】:

将以下内容添加到您的 web.xml 文件中:

<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/error.html</location>
</error-page>

假设您有堆栈跟踪打印输出或类似的方式来通知用户他们在 error.html 页面上遇到的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 2013-02-19
    • 2011-01-28
    • 2014-07-25
    • 1970-01-01
    相关资源
    最近更新 更多