1.forward请求转发
forward 是 服务器内部跳转 ,特点:
- URL 不改变
- 数据可以带过去
- 不会重新发请求
- 只能访问当前项目的 JSP(不能跳外部网站)
适用于: - 登录成功后跳转
- 校验失败回到原页面
- 转发到 JSP 显示数据
forward 是请求转发,属于服务器内部跳转。
返回 String 时如果写成 "forward:/路径",SpringMVC 就不会经过视图解析器,而是直接把请求转给目标 JSP 文件。
URL 不改变,并且可以携带数据,非常适合做错误提示跳转。
2.redirect 重定向
redirect 会让浏览器重新请求指定地址,是客户端跳转。
不能访问 WEB-INF 下面的 JSP,只能访问对外公开的资源。
适合跳转到首页、其他 Controller、或者外部链接。
redirect 和 forward 的区别
|---------------|-------------|---------------|
| 功能 | forward(转发) | redirect(重定向) |
| 是否改变URL? | ❌ 不改变 | ✔ 改变 |
| 是否是一次请求? | ✔ 一次请求 | ❌ 两次请求 |
| 能否访问 WEB-INF? | ✔ 能 | ❌ 不能 |
| 能否带数据? | ✔ 能 | ❌ 不能 |
| 使用场景 | 返回 JSP | 跳外部、新页面 |