如何在Java应用程序引擎上实现自定义404错误页?

如何在Java应用程序引擎上实现自定义404错误页?,java,google-app-engine,http-status-code-404,Java,Google App Engine,Http Status Code 404,嗨,我正在尝试为应用程序引擎上的404未找到错误设置一个静态错误页面 根据:它说404不能定制 根据:它似乎也不支持404 然而,似乎表明404错误页面可以定制。我现在很困惑。你是对的,这在应用程序引擎上的Java中目前不可用。但是,Python有一个变通方法。关于这个例子,你可以看看 希望这有帮助。为什么不使用JavaEE条目来实现这些目的 在web.xml中: <error-page> <error-code>404</error-code>

嗨,我正在尝试为应用程序引擎上的404未找到错误设置一个静态错误页面

根据:它说404不能定制

根据:它似乎也不支持404


然而,似乎表明404错误页面可以定制。我现在很困惑。

你是对的,这在应用程序引擎上的Java中目前不可用。但是,Python有一个变通方法。关于这个例子,你可以看看


希望这有帮助。

为什么不使用JavaEE条目来实现这些目的

在web.xml中:

<error-page>
    <error-code>404</error-code>
    <location>/app/error/404</location>
</error-page>
....
<error-page>
    <error-code>500</error-code>
    <location>/app/error/500</location>
</error-page>
以及类似jsp的文件:

<h2>Error!!!</h2>
....
<h3>Status code: #{param.statusCode}</h3>
错误!!!
....
状态代码:#{param.statusCode}

希望这有帮助。

我意识到在本地开发服务器上运行应用程序时会出现此问题。但是,当我将应用程序部署到应用程序引擎时。我可以看到使用web.xml配置的404错误页面。感谢您的帮助。

我已经能够在本地开发服务器上的App Engine SDK 1.6.1版和更早版本中成功重定向404错误。但是,在更新到GAE SDK 1.7.5之后,我无法让它在本地工作。我后来了解到,如上所述,404目前不支持它。

在app engine 1.9.48版上,这在云上运行:

[web.xml]

<web-app>

    ...    

    <error-page>
        <error-code>404</error-code>
        <location>/static-error.html</location>
    </error-page>
</web-app>

...    
404
/static-error.html

它的官方文件。。以下情况将不受支持:

来自谷歌应用程序引擎标准环境文档(2018年8月19日):

简言之,您必须具有此URL的servlet映射,如下所示:

<web-app>
    <servlet>
        <servlet-name>404</servlet-name>
        <jsp-file>/404.jsp</jsp-file>
    </servlet>
    <servlet-mapping>
        <servlet-name>404</servlet-name>
        <url-pattern>/404</url-pattern>
    </servlet-mapping>

    ...

    <error-page>
        <error-code>404</error-code>
        <location>/404</location>
    </error-page>
</web-app>

404
/404.jsp
404
/404
...
404
/404

此配置按预期工作。尝试获取不存在的页面(例如www.domain.com/unknownPage)时会显示错误页面

我不熟悉App Engine,但根据您找到的文档,目前无法自定义404 File not found页面。我意识到这个问题仅在本地开发服务器上不起作用。但是,当我将应用程序部署到应用程序引擎时。我可以看到使用web.xml配置的404错误页面。谢谢你的帮助。我尝试使用
,但我仍然收到默认的
错误404
消息。我提出了一个错误,很遗憾,我在app.yaml中没有看到任何404处理,因此很难判断您指的是什么。
<web-app>
    <servlet>
        <servlet-name>404</servlet-name>
        <jsp-file>/404.jsp</jsp-file>
    </servlet>
    <servlet-mapping>
        <servlet-name>404</servlet-name>
        <url-pattern>/404</url-pattern>
    </servlet-mapping>

    ...

    <error-page>
        <error-code>404</error-code>
        <location>/404</location>
    </error-page>
</web-app>