Spring MVC 自定义视图控制器
# Spring MVC 自定义视图控制器
前言
在 Spring MVC 中,有些页面跳转或视图渲染不涉及业务逻辑,只需要简单地映射一个 URL 到视图或进行页面重定向。为了避免编写冗余的控制器代码,可以通过 WebMvcConfigurer
的 addViewControllers
方法轻松实现这些需求。
# 1. 配置视图控制器(View Controller)
使用 ViewControllerRegistry
可以将特定的 URL 直接映射到视图、重定向路径或返回特定的 HTTP 状态码。
@Override
public void addViewControllers(ViewControllerRegistry registry) {
// 将访问 "/home" 的请求映射到名为 "home" 的视图
registry.addViewController("/home").setViewName("home");
// 将访问 "/test5" 的请求重定向到 "/test4"
registry.addRedirectViewController("/test5", "/test4");
// 将访问 "/test/**" 的请求直接返回 HTTP 状态码 500(服务器内部错误)
registry.addStatusController("/test/**", HttpStatus.INTERNAL_SERVER_ERROR);
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 2. 视图控制器的应用场景
简化页面跳转和视图渲染:
- 使用
addViewController
可以将 URL 映射到视图名称,而无需编写控制器方法。适用于简单的静态页面展示,如首页、登录页等。
registry.addViewController("/home").setViewName("home");
1- 访问
http://localhost:8080/home
时,将直接返回名为home
的视图。
- 使用
实现页面重定向:
- 使用
addRedirectViewController
可以将一个 URL 请求重定向到另一个 URL,例如将旧页面的请求重定向到新页面。
registry.addRedirectViewController("/test5", "/test4");
1- 访问
http://localhost:8080/test5
时,将被重定向到http://localhost:8080/test4
。
- 使用
返回特定的 HTTP 状态码:
- 使用
addStatusController
可以根据请求路径直接返回指定的 HTTP 状态码。这在模拟服务器错误或返回特定错误页面时非常有用。
registry.addStatusController("/test/**", HttpStatus.INTERNAL_SERVER_ERROR);
1- 访问
http://localhost:8080/test/anything
将返回 HTTP 500 状态码。
- 使用
# 3. 关键 API 说明
addViewController(String path)
:将指定的 URL 映射到视图名称。这些视图通常是 JSP、HTML 或 Thymeleaf 模板等静态页面。setViewName(String viewName)
:设置要返回的视图名称。视图名称需要与配置的视图解析器相匹配。addRedirectViewController(String urlPath, String redirectUrl)
:将指定的 URL 请求重定向到新的 URL。通常用于 URL 重构或页面迁移。addStatusController(String urlPath, HttpStatus status)
:将指定的 URL 直接返回指定的 HTTP 状态码。这在维护页面或特殊场景下非常有用。
# 4. 示例测试
控制器代码示例:
@RestController
public class TestController {
@GetMapping("/test4")
public String test4() {
return "This is test4 page.";
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
请求示例:
请求
/test5
重定向到/test4
:- URL:
http://localhost:8080/test5
- 返回结果:页面内容为
"This is test4 page."
- URL:
请求
/test/test
返回 HTTP 500 状态码:- URL:
http://localhost:8080/test/test
- 返回结果:服务器返回 500 状态码,页面显示错误提示。
- URL:
# 5. 总结
- 使用视图控制器可以简化页面跳转、重定向和错误页面的处理逻辑,避免为简单的映射编写不必要的控制器代码。
- 通过配置
addViewControllers
,可以实现:- 简单的静态页面渲染。
- 页面重定向。
- 返回特定的 HTTP 状态码。
- 在复杂的应用中,通过视图控制器的配置可以让页面跳转和状态返回更直观和简洁。
通过这些配置,你可以灵活地控制应用中的页面跳转和错误处理,提高代码的可读性和可维护性。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08