response.sendRedirect vs out.println(“REDIRECT = SOME URL”)

时间:2015-01-09 09:56:41

标签: servlets url-redirection

之间有什么区别
response.sendRedirect("http://www.someurl.com");

PrintWriter out = response.getWriter();
out.println("REDIRECT=http://www.someurl.com");

我知道sendRedirect()是如何运作的,但是out.println("REDIRECT=http://www.someurl.com");在这里做了什么?

1 个答案:

答案 0 :(得分:0)

  

我一直致力于支付网关服务,其中响应被发送到我的servlet。在我的servlet中,我执行一些操作并使用response.sendRedirect()重定向到响应页面,这不起作用。 out.println()正在运行。

那只是针对该服务的。他们显然需要具有纯文本/文本内容的HTTP 200响应,其格式与特定服务所期望的完全相同,而不是具有3xx标头的真正HTTP Location响应。通过这种方式,他们将反过来关注重定向而不是自己。基本上,客户端从您的服务器转到该支付服务,然后转到给定的重定向URL,而不是从您的服务器转到给定的重定向URL。

这完全取决于客户的期望。真实客户端(Web浏览器)至少只需要一个带有Location标头的HTTP 3xx响应才能执行重定向。

以下

response.sendRedirect("http://example.com");

有效地与

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