forward请求转发和redirect重定向的区别图解整理
一、区别图解
1、 forward (请求转发) :
request.getRequestDispatcher("/xx.jsp").forward(request, response);
2、redirect (重定向) :
response.sendRedirect(request.getContextPath()+"/xx.jsp");
二、区别整理
| 区别 | forward() | sendRedirect() |
| request对象setAttribute();的值是否 会丢失 |
不会 | 会 |
| 地址栏是否变化 | 否 (和请求Servlet 地址一致) |
是 (显示转向后的地址) |
| 是否可转向本web应用之外的页面 或网站 |
否 | 是 |
| 转向速度 | 快 | 慢 |
三、总结
1、由一图解可知, forward 请求转发是服务器行为,由一个Servlet转发给另一个Servlet。
2、 redirect 重定向是客户端行为,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.