如何在App Engine,Java上实现自定义404错误页面?

时间:2012-11-02 01:22:38

标签: java google-app-engine http-status-code-404

您好我正在尝试为应用引擎上的404未找到错误设置静态错误页面。

根据https://developers.google.com/appengine/docs/java/config/webxml#Error_Handlers:它说404无法自定义。

根据:https://developers.google.com/appengine/docs/java/config/appconfig#Custom_Error_Responses它似乎也不支持404。

然而,https://groups.google.com/forum/?fromgroups=#!topic/google-appengine-java/3C-pY5ta2HQ,似乎建议可以自定义404错误页面。我现在很困惑。

7 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:5)

为什么不使用Java EE< error-page>为这些目的进入?

在你的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>

您可以将它与Spring结合使用,并获得一般错误控制器,如:

....   
@Controller
public class ErrorController {

@RequestMapping(value = "/error/{errorCode}")
public final String errorCode(
        @PathVariable("errorCode") final String errorCode,
        final ModelMap modelMap) {
    modelMap.put("statusCode", errorCode);
    return "redirect:/ui/error.htm";
}

和你的jsp文件:

<h2>Error!!!</h2>
....
<h3>Status code: #{param.statusCode}</h3>

希望这有帮助。

答案 2 :(得分:1)

您是对的,这在App Engine上的Java目前不可用。但是,Python有一种解决方法。有关此示例,您可以查看GAE Boilerplate

希望这有帮助。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

摘自Google App Engine标准环境文档(2018年8月19日): enter image description here

简而言之,您必须对此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>

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

答案 5 :(得分:0)

在应用引擎版本1.9.48,这是在云上工作:

[web.xml]

<web-app>

    ...    

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

答案 6 :(得分:0)