Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java sendRedirect或请求分派更有效?_Java_Jsp_Servlets - Fatal编程技术网

Java sendRedirect或请求分派更有效?

Java sendRedirect或请求分派更有效?,java,jsp,servlets,Java,Jsp,Servlets,SendRedirect或requestdispatch?哪个更可取?哪个更有效 他们做两件截然不同的事情,所以你不能只决定效率 发送重定向会将浏览器发送到其他URL。该URL将对浏览器可见。你可能想要,也可能不想要。例如,在发布后,您可能应该重定向到GET页面,以避免在不重新发布的情况下无法重新加载结果页面。另一方面,您不能重定向到只能从servlet容器内部访问的“页面” 分派更“有效”,因为它没有额外的往返,但它只在相同的web应用程序上下文中工作(如果您这样设置,最多在相同的servle

SendRedirect或requestdispatch?哪个更可取?哪个更有效

他们做两件截然不同的事情,所以你不能只决定效率

发送重定向会将浏览器发送到其他URL。该URL将对浏览器可见。你可能想要,也可能不想要。例如,在发布后,您可能应该重定向到GET页面,以避免在不重新发布的情况下无法重新加载结果页面。另一方面,您不能重定向到只能从servlet容器内部访问的“页面”

分派更“有效”,因为它没有额外的往返,但它只在相同的web应用程序上下文中工作(如果您这样设置,最多在相同的servlet容器中工作)。此外,用户最初用来访问页面的URL将不同于链中稍后的servlet所称的URL,这可能会造成混淆。分派模式通常用于实际请求之前或之后的额外处理(代替ServletFilter),或用于错误页面


您可以使用分派传递请求属性,但只能在重定向上传递查询参数。您不能将其重定向为POST(因此可以附加到POST的数据量是有限的)。重定向中的所有查询参数对用户都是可见的。

它的使用效率很高,因为它比sendRedirect快,如果我们需要将控制转移到不同的域,应该使用重定向

当我们调用一个转发请求时,该请求被发送到服务器上的另一个资源,而不通知客户端另一个资源将处理该请求。此过程完全发生在web容器中。 另一方面,当调用sendRedirect方法时,它会导致web容器返回到浏览器,指示应请求新的URL。 由于浏览器发出一个全新的请求,因此在重定向发生之前存储为请求属性的任何对象都将丢失。 这个额外的往返使重定向比前进慢