1. 转发
- 携带数据
- 地址栏不变;
- 服务器内部跳转,浏览器不知道
- 公用一个request,所以可以在request作用域中存储数据
- A接到用户请求,帮助用户找到B
- 只能跳转到当前项目下
- 代码实现:req.getRequestDispatcher(URI).forward(req, resp);
2. 重定向
- 地址栏改变
- 浏览器发送新的请求
- 不共享一个request
- A接到用户的请求,告诉用户,你去找B
- 可以到跳转到其它项目下
- 可以到跳转到其它项目下
3. request 转发
- 设置数据到request作用域: req.setAttribute(key , Value);
- 前台EL表达式取值:${requestScope.Key}
- 转发:req.getRequestDispatcher(URI).forward(req, resp);
- 内部跳转,URI只能当前项目下,故不需要加项目名
4. response 重定向
- 重定向:resp.sendRedirect(URL);
- 可以跳转到外部项目,URL前需要加项目名
- 获取当前项目名:req.getContextPath()
小技巧:
如果需要传递数据 就使用转发
如果不需要传递数据,可以使用重定向