Jsp 处理发生的ServletException

Jsp 处理发生的ServletException,jsp,servlets,Jsp,Servlets,我正在构建一个简单的web应用程序。在我的doPost()方法中,当我转发到JSP时,如果出现ServletException,我将抛出ServletException。在我的web.xml文件中,我声明了一个错误页面以捕获500个错误。该应用程序在我的GlassFish服务器上运行良好,但当我部署到Tomcat服务器时,我被引导到problem.jsp页面。如何获得有关错误原因的详细信息 以下是如何在web.xml中配置我的错误页面: 500 /problem.jsp your proble

我正在构建一个简单的web应用程序。在我的doPost()方法中,当我转发到JSP时,如果出现ServletException,我将抛出ServletException。在我的web.xml文件中,我声明了一个错误页面以捕获500个错误。该应用程序在我的GlassFish服务器上运行良好,但当我部署到Tomcat服务器时,我被引导到problem.jsp页面。如何获得有关错误原因的详细信息

以下是如何在web.xml中配置我的错误页面:


500
/problem.jsp

your problem.jsp可以访问此请求属性,为您提供有关异常性质的提要:

  • javax.servlet.error.exception
您可以按如下方式使用这些选项:

    public void doPost(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
     {      
         Throwable throwable = (Throwable) request.getAttribute("javax.servlet.error.exception");
     }
之后,您可以通过执行以下操作监视异常的类型:

PrintWriter out = response.getWriter();
out.println("Exception Type : " +  throwable.getClass( ).getName( ));

资源


你可以从中了解更多。您将发现一些其他属性,您需要检查有关错误的详细信息

我必须在请求中设置可丢弃项吗?比如request.setAttribute(“throwable”throwable);例如,在doPost方法中。您可以通过尝试来顺利开始,为此,使用一个简单的
System.out.println(throwable.getClass().getName())
在doPost方法中,您会注意到控制台显示一条信息消息,指示异常的类型。问题是,服务器不在我的机器上,因此我无法访问控制台。在抛出ServletException之前,是否有一种方法可以将throwable作为属性传递给jsp?发现错误:org.apache.jasper.JasperException:绝对uri:无法在web.xml或与此应用程序一起部署的jar文件中解析。配置web.xml的方法将允许您获得任何异常(服务器距离无关紧要)给出错误代码500的结果。然后,您的problem.jsp可以访问该请求属性并在其上创建一个可丢弃的对象。您应该在此problem.jsp中包含所有异常处理。