springmvc自定义异常页面404
时间: 2024-12-31 14:31:56 浏览: 12
### 如何在 Spring MVC 中配置自定义 404 错误页面
为了实现更友好的用户体验,当请求资源不存在时可以展示定制化的错误页面。对于Spring Boot应用而言,可以通过多种方式来设置自定义的404错误页面。
#### 方法一:利用静态文件夹下的特定命名规则创建HTML文件
如果应用程序是基于Spring Boot构建,则只需简单地将名为`404.html`的文件放置于`src/main/resources/static/`目录下即可[^1]。这种方式适用于希望快速提供简单的静态响应场景。
```html
<!-- src/main/resources/static/404.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Page Not Found</title>
</head>
<body>
<h1>The page you're looking for doesn't exist.</h1>
<p>Please check the URL or go back to home page.</p>
<a href="/">Go Home</a>
</body>
</html>
```
#### 方法二:通过Java代码配置全局异常处理器并指定视图解析器路径
另一种更为灵活的方法是在项目中编写一个实现了`ErrorController`接口的类,并重写其方法来自定义处理逻辑以及返回相应的模板页面[^2]。此法允许开发者更加精细地控制不同类型的HTTP状态码对应的呈现效果。
```java
// CustomBasicErrorController.java
package com.example.demo.controller;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class CustomBasicErrorController implements ErrorController {
private static final String PATH = "/error";
@RequestMapping(value=PATH)
public String error(Model model){
// 可在此处添加更多业务逻辑判断
return "errors/error"; // 对应templates/errors/error.html或其他渲染引擎支持的形式
}
@Override
public String getErrorPath(){
return PATH;
}
}
```
同时还需要确保有对应位置上的Thymeleaf或者其他模版引擎能够识别到的`.html`文件存在:
```html
<!-- templates/errors/error.html -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="${status}">Status Code</title>
</head>
<body>
<div th:if="${status == '404'}">
<h1>Oops! The requested resource could not be found.</h1>
<!-- 更多个性化设计... -->
</div>
<!-- 处理其他可能的状态码情况 -->
</body>
</html>
```
此外,也可以采用XML方式进行web.xml中的<error-page/>标签声明具体的映射关系[^4];不过这种方法相对较为传统,在现代开发实践中较少被推荐使用。
阅读全文