sendRedirect(String url)和请求转发都是servlet把请求转给另外的对象,那么他们有什么区别呢?
1:请求转发是服务器内部行为,转发到的页面是同一个请求,客户端的url不变;而重定向是客户端行为,相当于客户端键入了另外一个地址,是另外一个请求(原来request域中的值都没有了)。
2:重定向sendRedirect(任意url)可以请求任意的地址,比如www:baidu.com,而请求转发只能转发到位于我们容器内的应用。
在head first servlet and jsp中有这么两张图,很清晰的解释了他们的区别。
重定向(sendRedirect(String url)的话,servlet是发送一个新的url地址给用户,用户的浏览器中键入新的url地址来访问新的资源。
而请求转发,servlet是内部直接把url地址指向一个新的地址,用户的浏览器的地址没有发生改变,用户没有察觉到。