16

伙计们,我正在努力解决在 Windows 环境中的 Tomcat 中打开我的自定义错误页面的问题。我得到了一些解决方案,但没有运气。我尝试了几乎所有的链接,但它对我不起作用。其中一些适用于部署在 Tomcat 中的其他解决方案,但不适用于我的 Web 服务

我的web.xml

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<error-page>
    <location>/error.html</location>
</error-page>


我从我的 Servlet 3.0 应用程序发送错误 response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

我已将error.html放在我的 WebService 的根目录中。

我为 JSP 页面而不是我也尝试过的 HTML 获得的一些链接

在 JSP 的情况下,我使用:

<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <h1>Error</h1>
</body>
</html>


仅供参考,它适用于其他 Tomcat 内置解决方案,它运行良好。但在我的Web 服务中,我收到响应 500,但页面打开为空白。还有一件事我禁用了我的 Internet Explorer 9.0 显示错误友好页面仍然响应来自 servlet 的 500。但是错误页面是空的。

如果对我的查询有任何想法或疑问,请告诉我。我需要它尽快。

4

2 回答 2

30

尝试将以下代码段放入您的WEB-INF/web.xml

<error-page>
    <error-code>500</error-code>
    <location>/Error.jsp</location>
</error-page>

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/Error.jsp</location>
</error-page>

在这种情况下,与目录Error.jsp处于同一级别WEB-INF(不在其中)。

于 2013-04-13T14:55:00.340 回答
7

如果您使用嵌入式 Tomcat,则可以以编程方式实现相同的功能,例如:

        Context appContext = ...            
        ErrorPage errorPage = new ErrorPage();
        errorPage.setErrorCode(HttpServletResponse.SC_NOT_FOUND);
        errorPage.setLocation("/my_custom_error_page.html");
        appContext.addErrorPage(er);
于 2017-02-15T14:43:35.410 回答