spring - Spring MVC中如何通过返回自定义错误页面来全局处理404异常?

标签 spring spring-mvc exception

我需要返回 HTTP 404 的自定义错误页面,但代码不起作用。我已经阅读了 stackflow 1 , 2 , 3和不同online + articles但我的情况与那些人完全不同,或者至少我无法弄清楚问题所在。

HTTP Status 404 -

type Status report

message

description The requested resource is not available.

例如,建议在 web.xml 中使用操作名称来处理异常,它可能有效,但我认为这不是一个好的方法。

我使用了以下组合:

1)

@Controller   //for class
@ResponseStatus(value = HttpStatus.NOT_FOUND) //for method

2)
 @Controller   //for class
 @ResponseStatus(value = HttpStatus.NOT_FOUND) //for method
 @ExceptionHandler(ResourceNotFoundException.class) //for method

3)

@ControllerAdvice //for class
@ResponseStatus(value = HttpStatus.NOT_FOUND) //for method

3)

@ControllerAdvice //for class
@ResponseStatus(HttpStatus.NOT_FOUND) //for method

4)
 @ControllerAdvice   //for class
 @ResponseStatus(value = HttpStatus.NOT_FOUND) //for method
 @ExceptionHandler(ResourceNotFoundException.class) //for method

代码

@ControllerAdvice
public class GlobalExceptionHandler {
    @ResponseStatus(value = HttpStatus.NOT_FOUND)
    public String handleBadRequest(Exception exception) {
          return "error404";
    }
}

最佳答案

如果没有找到处理请求的处理程序,

DispatcherServlet 默认情况下不会引发异常。因此,您需要显式激活它,如下所示:

在 web.xml 中:

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>throwExceptionIfNoHandlerFound</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

如果您使用基于注释的配置:

dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);

在 Controller 建议类中:

@ExceptionHandler
@ResponseStatus(HttpStatus.NOT_FOUND)
public String handleExceptiond(NoHandlerFoundException ex) {
    return "errorPage";
}

关于spring - Spring MVC中如何通过返回自定义错误页面来全局处理404异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29689742/

相关文章:

java - 如何实现通用分页

java - 升级到 spring 4.1.6 后@JsonIgnore 不起作用

c++ - 为什么我在 C 库中看到 THROW?

spring-mvc - Spring Security+MVC注解非法参数异常

java - 是否可以合并 java\jre\security\lib\cacerts 文件

c# - 消费者运行时应用程序崩溃并退出调试器 & rabbit mq 服务重启

c++ - 关于异常继承语法的一个问题

java - @Autowired 在 Spring 中的类上

java - Spring属性解密

java - 动态表格 :select and form:option in Spring form tags