Tomcat 7 中错误代码 500 的自定义错误页面

2022-09-03 04:19:50

伙计们,我正在为在Windows环境中的Tomcat中打开我的自定义错误页面的问题而苦苦挣扎。我得到了一些解决方案,但没有运气。我尝试了几乎所有的链接,但它对我不起作用。他们中的一些人适用于部署在Tomcat中的其他解决方案,但不适用于我的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);

我已将错误.html放在 Web 服务的根目录中。

我为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。但错误页面为空。

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


答案 1

尝试将以下代码段放入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.jspWEB-INF


答案 2

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

        Context appContext = ...            
        ErrorPage errorPage = new ErrorPage();
        errorPage.setErrorCode(HttpServletResponse.SC_NOT_FOUND);
        errorPage.setLocation("/my_custom_error_page.html");
        appContext.addErrorPage(er);

推荐