重定向和请求转发
浏览器控制跳转
- URL
- 超链接
- form表单
服务器端控制跳转方式
- 请求转发
- 重定向
请求转发和重定向
共同点
都可以实现页面的跳转
不同点
-
语句不同
转发:req.getRequestDispatcher("/success.jsp").forward(req,resp);
重定向:resp.sendRedirect(req.getContextPath()+"/success.jsp");
-
跳转前台地址显示
转发:显示的跳转之前的地址
重定向:显示的跳转之后的地址
-
跳转前后是否可以共享数据
转发:可以
重定向:不可以
-
原理不同
-
效率不同
转发:高 有产生新的请求
重定向:低 产生了新的请求
-
跳转范围不同
转发:只可以在当前项目中跳转
重定向:服务器任意资源位置
-
是否会造成表单的重复提交
转发:会
重定向:不会
-
路径不同
绝对路径
转发:不支持
重定向:支持
根路径-------------统一书写根路径
都是支持
转发 / 代表了当前上下文路径
相对路劲(相对本身)
转发和重定向都是支持的
应用场景:
[A]在进行页面跳转前后是否需要共享request中数据
跳转前后共享数据:转发
[B]是否考虑表单的重复提交问题
不可以表单重复提交:重定向