如何自定义自定义http错误代码返回的默认html文件

时间:2014-10-22 14:27:38

标签: java google-app-engine

在我的应用程序中,我想返回错误代码并在服务器上设置错误消息。这就是我使用的:

response.setStatus(530);
response.sendError(530, e.getMessage());

当我返回类似的自定义错误时,应用引擎始终会发送包含在默认html模板中的错误代码和状态。在javascript中:

$(document).ajaxError(function (event, request, settings) {
        // request.statusText is always "Internal Server Error" 
        // and not my custom status message
        // request.responseText is an html string
    });
顺便说一句,在开发服务器中它是不同的。 statusText 我的自定义错误文本

1 个答案:

答案 0 :(得分:1)

在您的web.xml文件中,您可以指定要在特定错误代码上提供的jsp:

<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/jsp/errors/404.jsp</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/WEB-INF/jsp/errors/500.jsp</location>
</error-page>

将根据需要呈现jsp。

请注意,这在本地devserver中无法正常运行,您需要进行部署才能看到它的运行情况。为了帮助开发,您可以直接将错误页面加载为jsp。

错误页面呈现仅在resp.sendError(code)时发生 - 如果你只是resp.setStatus(code, message),servlet容器将不会处理这样的错误。这使您仍然可以返回json和ajax调用的错误代码。

如果您尚未指定页面,则servlet容器可自行决定是否提供HTML(如您所见)。