【问题标题】:Handling "error 500" in Spring MVC using @ExceptionHandler使用 @ExceptionHandler 在 Spring MVC 中处理“错误 500”
【发布时间】:2012-12-01 23:42:50
【问题描述】:

(首先,我必须说我一直在 stackoverflow 和互联网上寻找答案,但没有找到足够的答案)**我刚刚开始Spring MVC 的冒险,我的第一个任务是使用 @ExceptionHandler 注释处理内部服务器错误(首先,我必须指出我不想在 web.xml 中使用错误页面)。简而言之,无论何时出现“错误 500”,都应该显示一个正确的站点,其中包含指向主站点的链接。所以,我的问题是我不知道如何在每次发生错误 500 时调用 @ExceptionHandler(Exception.class) 之后的方法。

【问题讨论】:

    标签: java spring model-view-controller error-handling


    【解决方案1】:

    如果你使用java配置,你可以尝试如下:

    @Configuration
    public class ExcpConfig {
    
        @Bean(name = "simpleMappingExceptionResolver")
        public SimpleMappingExceptionResolver simpleMappingExceptionResolver() {
            SimpleMappingExceptionResolver resolver= new SimpleMappingExceptionResolver();
    
            Properties mappings = new Properties();
            resolver.setExceptionMappings(mappings); // None by default
            resolver.setExceptionAttribute("ErrorOccurred"); // Default is "exception"
            resolver.setDefaultErrorView("500"); // 500.jsp
            return resolver;
        }
    
    }
    

    【讨论】:

    • 如果在渲染 jsp 时发生错误,我仍然会看到带有堆栈跟踪的 JBoss 错误页面。必须有一种简单的方法来捕获这些类型的错误,以免它们暴露给最终用户。
    • @Roger 如果您创建一个像 500.jsp 这样的页面,那么它将呈现您的自定义 500.jsp 页面而不是 jboss 错误页面。
    • 我的 400.jsp、403.jsp 等在同一个视图目录中有一个“500.jsp”。都住。这些是通过@ControllerAdvice 类处理的,当然在这里不适用。
    【解决方案2】:

    你实际上不能用@ExceptionHandler 注解做你想做的事。这仅适用于特定控制器中的异常,不适用于更一般的情况,例如错误 500。

    您可能希望查看实现 HandlerExceptionResolver 接口,并将其连接到更一般的异常。

    这是 spring 文档中的链接。

    http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html#mvc-exceptionhandlers

    如果您需要任何其他帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 2016-12-16
      • 1970-01-01
      • 2016-12-11
      • 2017-09-20
      • 2011-07-24
      相关资源
      最近更新 更多