Spring MVC 页面跳转方案与区别

SpringMVC 的页面跳转方案主要分为 ‌转发(Forward)‌‌重定向(Redirect)‌ 两类,具体实现方式和区别如下:

一、页面跳转方案

1. ‌转发(Forward)‌

  • 默认方式‌:直接返回字符串逻辑视图名,由视图解析器拼接前缀和后缀生成完整路径。
java 复制代码
@RequestMapping("/example")
public String example(Model model) {
    model.addAttribute("data", "value");
    return "viewName";  // 默认转发到 /WEB-INF/views/viewName.jsp
}
  • 显式转发‌ :通过 forward: 关键字指定目标地址,‌不经过视图解析器‌。
java 复制代码
return "forward:/targetPath";  // 转发到指定路径(页面或另一个 Controller)

2. ‌重定向(Redirect)‌

  • 显式重定向‌:通过 redirect: 关键字指定目标地址,‌不经过视图解析器‌,且地址栏会变化。
java 复制代码
Copy Code
return "redirect:/targetPath";  // 重定向到指定路径(页面或另一个 Controller)
  • 带参数重定向‌:通过 RedirectAttributes 传递参数。
java 复制代码
@RequestMapping("/save")
public String save(RedirectAttributes attributes) {
    attributes.addAttribute("param", "value");  // URL 参数
    attributes.addFlashAttribute("flashParam", "value");  // 临时存储
    return "redirect:/targetPath";
}

二、转发与重定向的区别

特性‌ 转发(Forward)‌ 重定向(Redirect)‌
地址栏变化‌ 不变化(服务器内部跳转)‌ 变化(客户端重新发起请求)‌
请求次数‌ 1 次请求 2 次请求
‌数据共享‌ 可通过 Model 或 request 共享数据‌ 需通过 URL 参数或 RedirectAttributes‌
‌视图解析器生效范围‌ 默认方式生效,显式转发不生效‌ 显式重定向不生效‌
应用场景‌ 需要保留请求上下文(如表单提交后回显数据) 需防止重复提交(如支付成功后跳转结果页)

三、扩展场景示例

1‌. 跳转到其他 Controller‌

java 复制代码
// 转发到其他 Controller
return "forward:/otherController/method";

// 重定向到其他 Controller
return "redirect:/otherController/method";

‌2. 静态资源跳转‌

重定向可直接跳转到外部资源或静态页面(如 redirect:http://example.com),而转发仅限服务器内部资源‌78。

总结

SpringMVC 的跳转方案以转发和重定向为核心,通过 forward: 和 redirect: 关键字实现灵活控制。选择方案时需结合地址栏变化、数据传递需求和安全性等因素‌14。

相关推荐
冷雨夜中漫步7 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴7 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再7 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
JH30738 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
喵手9 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934739 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy9 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
肖永威10 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ11 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
枷锁—sha11 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全