两者都是为了实现页面跳转
A.转发
函数:request.getRequestDispatcher().forward(request,respond)
顾名思义就是把请求转给另一个人
例如张老板叫员工李四去干一个活,李四不会,然后私底下叫张三完成了,老板并不知道是别人完成的,但是李四只能叫本公司的人完成
回到javaweb开发就是客户端发送一个请求到服务端某个servlet(注意jsp也是一个servlet),然后它进行转发给另一个servlet,这是在服务端完成的行为,客户端并不知情,所以虽然转发跳转到了另一个页面,客户端地址栏不会变,显然就是客户端发送了一次请求,所以这就决定了request域的使用情况,且只能在当前web项目应用内转发
B.重定向
函数:response.sendRedirect(" ")
一样的道理,张老板叫李四去干一个活,李四这时直接对老板说不会,张老板就只能重新叫张三去完成,这时老板也有权利找外包
这时就成为了客户端在发送了一次请求的基础上又发送了一次请求,所以发送了两次请求,所以效率慢,地址栏也会改变到第二次请求的,这是客户端的行为,重定向的内容范围也比较大,可以去重定向到其他项目的地址去
网络常问:转发和重定向后的代码内容是否还会继续执行?
答:会,使用 return;可以让它不执行