Servlets response.sendRedirect vs out.println(“REDIRECT=SOMEURL”)

Servlets response.sendRedirect vs out.println(“REDIRECT=SOMEURL”),servlets,url-redirection,Servlets,Url Redirection,两者的区别是什么 response.sendRedirect("http://www.someurl.com"); 及 我知道该怎么做,但out呢=http://www.someurl.com; 你在这里干什么 我一直在开发一个支付网关服务,在该服务中,响应被发送到我的servlet。在我的servlet中,我执行了一些操作,并使用response.sendRedirect重定向到响应页面,但这不起作用。当out.println在工作时 这只是特定于该服务。它们显然需要一个HTTP 200响应

两者的区别是什么

response.sendRedirect("http://www.someurl.com");

我知道该怎么做,但out呢=http://www.someurl.com; 你在这里干什么


我一直在开发一个支付网关服务,在该服务中,响应被发送到我的servlet。在我的servlet中,我执行了一些操作,并使用response.sendRedirect重定向到响应页面,但这不起作用。当out.println在工作时

这只是特定于该服务。它们显然需要一个HTTP 200响应,其中包含特定服务所期望的格式的纯文本内容,而不是一个真正的HTTP响应和一个标头。通过这种方式,他们将依次处理重定向,而不是您自己。基本上,客户端从服务器转到支付服务,然后转到给定的重定向URL,而不是从服务器转到给定的重定向URL

这完全取决于客户的期望。真正的客户端web浏览器至少只需要一个带有位置头的HTTP 3xx响应就可以执行重定向

以下

response.sendRedirect("http://example.com");
封面下的内容是否与

response.setStatus(302);
response.setHeader("Location", "http://example.com");

你在哪里读到/了解到的?我一直在开发一个支付网关服务,在该服务中,响应被发送到我的servlet。在我的servlet中,我执行了一些操作,并使用response.sendRedirect重定向到响应页面,但这不起作用。当out.println工作时。您的答案似乎很有希望,但他们是如何知道HTTP响应的?您刚刚写信给它的?out代表响应体,好的。那sendRedirect呢?什么是反应体?什么都没有。它是空的。只需设置一个位置标题,如我在回答中所述。您可以在浏览器的HTTP流量监视器中看到它。编辑:我更新了答案,以显示与sendRedirect相当的隐藏内容,如果您熟悉基本HTTP,这可能更能自我解释。在我的chrome浏览器的“网络”选项卡下,两种方法的状态都是200 OK。我做错什么了吗?
response.setStatus(302);
response.setHeader("Location", "http://example.com");