springboot如何优雅处理404错误
时间: 2023-07-27 12:26:33 浏览: 41
在 Spring Boot 中,可以通过自定义错误页面来优雅地处理 404 错误。具体步骤如下:
1. 在 src/main/resources 目录下创建一个名为 templates 的文件夹;
2. 在 templates 文件夹下创建一个名为 error 的文件夹;
3. 在 error 文件夹下创建一个名为 404.html 的文件;
4. 在 404.html 文件中编写自定义的错误页面,例如:
```
<!DOCTYPE html>
<html>
<head>
<title>404 Not Found</title>
</head>
<body>
<h1>404 Not Found</h1>
<p>您所访问的页面不存在,请检查您的链接是否正确。</p>
</body>
</html>
```
5. 在 Spring Boot 应用的配置文件中添加如下配置:
```
server.error.whitelabel.enabled=false
```
这样可以禁用 Spring Boot 默认的错误页面;
6. 重启应用,访问一个不存在的页面,即可看到自定义的错误页面。
这样就可以通过自定义错误页面来优雅地处理 404 错误了。
相关问题
springboot如何自定义处理404错误
Spring Boot默认情况下提供了一个默认的错误页面,如果您想要自定义处理404错误,您可以按照以下步骤进行:
1. 创建一个自定义的错误页面,如404.html。
2. 在application.properties或application.yml文件中添加以下配置:
```
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
```
上述配置将会在没有找到处理请求的控制器时抛出异常,并且禁用静态资源的默认映射。
3. 创建一个ControllerAdvice并添加一个方法,用于处理404错误,例如:
```java
@ControllerAdvice
public class CustomErrorController {
@ExceptionHandler(NoHandlerFoundException.class)
public ModelAndView handleNotFoundError(HttpServletRequest request, Exception ex) {
ModelAndView modelAndView = new ModelAndView("404");
modelAndView.addObject("url", request.getRequestURL());
modelAndView.addObject("exception", ex);
return modelAndView;
}
}
```
上述代码将会创建一个ControllerAdvice,用于处理404错误。在方法中,我们可以通过NoHandlerFoundException获取请求URL和异常信息,并将它们添加到ModelAndView中。
完成以上步骤后,当发生404错误时,Spring Boot将会调用我们自定义的错误处理方法,并返回自定义的错误页面。
springboot如何配置404错误页面
Spring Boot提供了默认的404页面,但是您可以通过以下步骤自定义404页面:
1. 创建一个404.html页面,该页面应该放在classpath:/templates/error/目录下。
2. 在application.properties或application.yml文件中添加以下配置:
```
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
```
上述配置将会在没有找到处理请求的控制器时抛出异常,并且禁用静态资源的默认映射。
3. 创建一个自定义的ErrorController,该控制器应该继承BasicErrorController并覆盖getErrorPath()方法,例如:
```java
@Controller
public class CustomErrorController extends BasicErrorController {
public CustomErrorController(ErrorAttributes errorAttributes) {
super(errorAttributes);
}
@Override
public String getErrorPath() {
return "/error";
}
@RequestMapping("/error")
public ModelAndView error(HttpServletRequest request, HttpServletResponse response) {
ModelAndView modelAndView = new ModelAndView("error/404");
modelAndView.setStatus(HttpStatus.NOT_FOUND);
return modelAndView;
}
}
```
上述代码将会创建一个自定义的ErrorController用于处理404错误,并返回自定义的404页面。需要注意的是,getErrorPath()方法应该返回与@RequestMapping注解中的路径相同的路径。
完成以上步骤后,您就可以访问自定义的404页面了。