写法:
forward : request.getRequestDispatcher("转发地址").forward(request,response);(a找b借钱,b说没有,b去找c,再把最终的结果告诉a)
redirect :request.sendRedirect("重定向路径"); (a找b借钱,b说没有,你去找c吧)
地址栏中:
forward是服务器内部的请求转,服务器直接访问目标地址url,然后把内容发给浏览器,浏览器不知道所以地址栏中的地址不改变。
redirect是间接转发方式,是服务器端根据逻辑,发送一个状态码(302),告诉浏览器重新去请求给定的地址,所以地址栏中的地址是新的url。
请求次数:
forward:客户端和浏览器只发送一次请求。
redriect :发送两次http请求,服务器端在次响应第一次请求的时候,让浏览器转向新的url发送请求。
数据共享:
forward: 转发页面和转发到的页面可以共享一个request中的数据
redriect : 不能共享。
运用地方:
forward:主要用在用户登录上转发到相应的角色上
redriect: 一般用于注销登录是返回主页,或者根据用户的登录状态,判断用户没有登录,跳转到相应的登录页面
效率:
forward:高
redirect:低