转发和重定向的区别
forward 转发
特点
1.浏览器地址不改变
2.只能转发到当前服务器内部资源中。
3.转发是一次请求,可以使用request对象来共享数据
request.getRequestDispatcher("demo.jsp").forward(request, response);
redirect 重定向
特点
1.地址栏发生编号
2.重定向可以访问其他站点(服务器)的资源
3.重定向是两次请求,不能使用request对象来共享数据了
4.重定向,其实是两次request(请求)
response.sendRedirect(“demo.jsp”);
1、请求次数:重定向是浏览器向服务器发送一个请求并收到响应后再次向一个新地址发出请求,转发是服务器收到请求后为了完成响应跳转到一个新的地址;重定向至少请求两次,转发请求一次;
2、地址栏不同:重定向地址栏会发生变化,转发地址栏不会发生变化;
3、是否共享数据:重定向两次请求不共享数据,转发一次请求共享数据(在request级别使用信息共享,使用重定向必然出错);
4、跳转限制:重定向可以跳转到任意URL,转发只能跳转本站点资源;
5、发生行为不同:重定向是客户端行为,转发是服务器端行为;
6、转发代码后面的代码还可以进行执行。