通过使用struts one在我面前查看一些遗留代码,我看到了:
<global-forwards>
...
<forward name="accessDenied" path="/www/jsp/AccessDeniedForm.do" redirect="true" />
</global-forwards>
所以这只是一个发送到拒绝访问页面的全局转发。 我对重定向而不是前进的决定感到好奇。使用它的优点和缺点是什么?
答案 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将由新的浏览器请求调用,旧请求中存储的任何数据都将丢失。