转发和重定向
转发和重定向
转发是一次请求,服务器共享同一个请求
只能访问当前工程的地址
重定向是两次请求,第一次请求返回给浏览器,由浏览器发送第二次请求
部署项目时需要关注两个路径
-
当前项目的部署路径(项目部署在web服务器的test文件夹下)
-
tomact的根路径
Servlet 跳转方式:Forward(转发) vs Redirect(重定向)
1. 核心区别
对比项 | Forward(转发) | Redirect(重定向) |
---|---|---|
实现方式 | request.getRequestDispatcher().forward() | response.sendRedirect() |
跳转行为 | 服务器内部跳转 | 客户端跳转(浏览器发起新请求) |
URL变化 | 不变(浏览器地址栏显示原URL) | 改变(显示新URL) |
数据共享 | 可共享request/response数据 | 不能共享(需通过Session/URL参数传递) |
跳转范围 | 仅限当前应用内部 | 可跳转任意URL(包括外部网站) |
请求次数 | 1次请求 | 2次请求 |
性能 | 更快(无额外网络请求) | 较慢(多一次HTTP往返) |
2. 典型应用场景
Forward适用场景
-
同一Web应用内的页面跳转
-
需要传递数据的场景(如Servlet→JSP)
-
需要隐藏真实路径的安全场景
Redirect适用场景
-
需要跳转到外部网站
-
防止表单重复提交(PRG模式)
-
登录后返回原页面