请求转发和重定向都可以实现页面的跳转,但是具体他们之间有什么不同点值得我们考虑,那么下面就让我来说一下我的看法。
重定向
1、写法
response.sendRedirect("login_success.html");
2、表现特征
地址栏上显示的是最后那个资源的路径名请求次数最少有两次,服务器在第一次请求后会返回302以及一个地址,浏览器再根据这个地址执行第二次的访问可以跳转到任意的路径,不是自己的工程也可以跳转效率低,需要执行两次请求后续的请求没办法使用上一次的request存储的数据,或者没有办法使用上一次的request对象,因为是两次不同的请求
请求转发
1、写法
//请求转发的写法: 参数即跳转的位置
request.getRequestDispatcher("login_success.html").forward(request, response);
2、表现特征
地址栏上显示的是请求servlet的地址,返回200 OK请求次数只有一次,因为是服务器内部帮客户端执行了后续的工作只能跳转到自己项目的资源路径效率稍高,因为只执行了一次请求可以使用上一次的request对象
举例:
情景:我要去商店买可乐,但是那个商店已经没有可乐了。
方案:
重定向:商店老板会告诉我,哪个商店有可乐,让我去那家商店去买请求转发:商店老板会去有可乐的商店买回来,然后给我
最后用一张图片来进行总结: