重定向或转发

时间:2012-03-27 08:37:27

标签: redirect struts forward

通过使用struts one在我面前查看一些遗留代码,我看到了:

<global-forwards>
     ...
     <forward name="accessDenied" path="/www/jsp/AccessDeniedForm.do" redirect="true" />
</global-forwards>

所以这只是一个发送到拒绝访问页面的全局转发。 我对重定向而不是前进的决定感到好奇。使用它的优点和缺点是什么?

3 个答案:

答案 0 :(得分:5)

  

使用它的专业人士和合作伙伴是什么?

在讨论使用重定向设置为true的前向元素的pro和con之前,让我们了解该配置实际发生了什么。如果在forward元素中将redirect设置为true,则应向用户代理发出重定向指令,以便为此forward的资源发出新请求。此link可能会提供您需要的详细信息。

重定向的默认值为false,基本上在调用forward元素时,它会转发到指定的路径,就是它。如果您将重定向设置为true,例如,浏览器将发出另一个请求。所以我认为,如果您真的想要使用它,您可能知道或了解pro和con。

答案 1 :(得分:1)

在重定向中,控件可以定向到不同的服务器甚至是另一个域名。重定向需要往返。当重定向发出时,它会被发送回客户端,重定向的URL信息在标题中指示浏览器移动到下一个URL。这将作为新请求,并且所有请求和响应数据都将丢失。

在转发中,转发是从服务器端完成的,客户端浏览器URL不会更改。数据也不会丢失。它就像浏览器页面刷新一样。无论第一次提交中发布的数据是什么,都会重新提交。所以请谨慎使用。

转发和重定向都用于不同的场景,全局转发应该是重定向,因为它是一个错误情况。

重定向速度较慢,因为它需要往返。前转更快。

答案 2 :(得分:0)

如果指定

redirect =“true”,Struts使用客户端重定向

  

[response.sendRedirect是()]

。 JSP将由新的浏览器请求调用,旧请求中存储的任何数据都将丢失。