请求重定向:客户端行为,response.sendRedirect(),从本质上来讲就相当于两次请求,前一次请求的对象不会进行保存,而地址栏里的URL地址会发生改变。
请求转发:服务器行为,request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的URL地址不会发生改变。
举个例子来解释这两种区别:
1.假设一个人去一个公安局办理结婚证,公安局说,这个事情不归我们管呀,要去民政局呀,于是这个人哪怕在公安局填写了他的信息,公安局也不会保存,他到了民政局之后还是要再填写一次。这个就相当于重定向。
2.而假设说这个人在公安局填写了一次信息,公安局的人说现在国家改革啦,你在我们这里填写了之后,你的结婚请求我已经帮你发给民政局啦,你在我们这里填写的信息的也交给民政局了,然后民政局也派人把你的结婚证拿过来了(这个相当于从转发给的地址得到处理信息反馈),你可以不用跑了(人没动,相当于URL地址没有发生变化).
接下来我们看看例子
我这里就不敲代码了,具体情况你们自己看视频吧~7分钟,讲的很清楚。