【问题标题】:How to redirect to error page in servlet?如何重定向到servlet中的错误页面?
【发布时间】:2016-07-16 19:40:48
【问题描述】:

我正在编写 servlet,如果出现异常,我会重定向到我的自定义错误页面,因为我已经这样做了。

在 web.xml 中

<error-page>
  <exception-type>java.lang.Exception</exception-type>
  <location>/WEB-INF/jsp/ErrorPage.jsp</location>
</error-page>

在 Servlet 中,

protected void doPost(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
try{
       //Here is all code stuff
       Throw new Exception();
}catch(Exception e){

         e1.printStackTrace();

}

但是这里ErrorPage.jsp 没有显示,我哪里出错了谁能解释我?

【问题讨论】:

    标签: java jsp servlets exception-handling error-handling


    【解决方案1】:

    您正在捕获异常,并且仅在内部打印堆栈跟踪,因此错误页面不会生效,删除 try-catch 或重新抛出它会起作用。此外,您还有一些语法错误。尝试类似

    try{
           //Here is all code stuff
           throw new Exception();
    }catch(Exception e){
             e.printStackTrace();
             throw new ServletException();
    }
    

    【讨论】:

    • k 。 .谢谢你,我得到了解决方案,你知道如何在ErrorPage.jsp 中获得异常详细信息吗?我的意思是,我想显示错误状态代码。
    【解决方案2】:

    问题是您捕获了异常,因此没有异常会离开您的doPost() 方法。仅当与 &lt;exception-type&gt;(相同或其子类)匹配的 Exception 离开您的 doPost() 方法时,您才会被重定向错误页面。

    您应该重新抛出捆绑在RuntimeException 中的Exception,例如:

    } catch(Exception e) {
        e1.printStackTrace();
        throw new RuntimeException(e);
    }
    

    不幸的是,如果我们谈论的是一般的Exception,你不能不抓住它,因为doPost() 被声明为只抛出ServletExceptionIOException 的实例。你可以不抓那些,但java.lang.Exception必须抓。

    【讨论】:

    • 非常感谢,它成功了,以及如何在我的ErrorPage.jsp 中获取异常详细信息,我的意思是,我想显示错误状态代码。
    • @Raghu 你什么意思? /WEB-INF/jsp/ErrorPage.jsp 是你的编辑,并根据你的需要定制。
    • 自定义不多,只是想显示错误状态码。
    • 你有我的问题。 .?
    • @Raghu 响应状态码可从HttpServletResponse 对象获得:response.getStatus()。另请注意,触发异常页面的Exception 也可用作exception,因此例如插入Exception 的消息:&lt;%=exception.getMessage()%&gt;
    【解决方案3】:

    您已经使用 doPost() 处理了 Exception

    try{
           //Here is all code stuff
           Throw new Exception();
    }catch(Exception e){
             e1.printStackTrace();    
    }
    

    trycatch 块。所以errorPage.jsp 不会被调用。未处理的异常调用&lt;error-page&gt;

    一个很好的示例教程Exception Handling

    阅读更多信息Best practice error handling in JSP Servlets

    【讨论】:

    • 谢谢你。 . ,教程对我很有帮助。 .
    猜你喜欢
    • 2015-01-04
    • 1970-01-01
    • 2019-07-16
    • 2015-07-24
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 2010-12-16
    相关资源
    最近更新 更多