请求转发:getRequestDispatch(String path).forward(request,response)
请求转发和重定向都是页面跳转
重定向:sendRedirect(url)
1.请求转发相当于是张三找李四借钱,但是李四没钱,李四就跑去银行借钱,再把钱借给张三,这里张三值发送了一次请求,但是至少经历了两次转发才拿到钱,但是是从李四手里拿到的钱,所以他的借钱目的人就是李四,向银行借钱这部操作是李四自身进行的,与张三无关
2.重定向相当于是张三找李四借钱,但是李四没钱,李四告诉李三可以去银行借钱,张三又跑去银行把钱借了出来,这里张三发送了两次借钱的请求,但是第一次没有借钱成功,第二次才从银行里拿到钱,所以他的借钱人就是银行
3.转发和重定向的区别
1.请求转发属于内部跳转,服务器内部转发,整个过程处于同一个请求当中,不可以跳到其他网站,只能在同一个网站内跳不同的页面
2.重定向则是站外跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。不在同一个请求。重定向,实际上客户端会向服务器端发送两个请求
3…取值
请求转发(站内跳转):可以获取保存在request作用域中的数据
重定向(站外跳转): 不能获取保存在request作用域中的数据
4.地址栏
请求转发(站内跳转):地址栏不发生变化
重定向(站外跳转):地址栏显示跳转页面路径
5.请求次数
请求转发(站内跳转):仅发起一次请求,所以可以获取到保存在request中的数据
重定向(站外跳转):发起多次请求,所以不能获取request中的数据
6.性能(效率)
站外跳转): 不能获取保存在request作用域中的数据
4.地址栏
请求转发(站内跳转):地址栏不发生变化
重定向(站外跳转):地址栏显示跳转页面路径
5.请求次数
请求转发(站内跳转):仅发起一次请求,所以可以获取到保存在request中的数据
重定向(站外跳转):发起多次请求,所以不能获取request中的数据
6.性能(效率)
请求转发(站内跳转) > 重定向(站外跳转)