Servlet中的forward和redirect区别

使用背景

在设计Web应用时,需要把一个系统进行结构化设计,即按照模块化进行划分,让不同的Servlet实现不同的功能,例如让其中一个Servlet负责接收用户的请求,另一个Servlet负责处理用户的请求。为了实现这种程序的模块化,就需要保证在不同的Servlet之间可以相互跳转,而Servlet中主要有两种跳转的方式:forward方式和redirect方式。

对比

forward:(转发)指服务器内部的重定向,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,而客户端并不知道,因此在客户端的地址栏中不会显示转向后的地址,还是原来的地址。由于整个重定向的过程用的是同一个Request,因此forward会将Request的信息带到被定向的JSP或Servlet中使用。

redirect:(重定向)客户端的重定向,是完全的跳转,即客户端浏览器会获取到跳转后的地址,然后重新发送请求,因此浏览器中显示跳转后的地址。同时,这种方式比forward方式多了一次网络请求,因此效率要低于forward方式。

因此,一般当一个forward方式可以满足要求时,尽可能地使用forward方式。

:转载文章请注明出处,谢谢~