为什么在struts 1. *中使用'redirect = true'?

问题描述 投票:23回答:3

我在执行一个没有显示的动作时创建的ActionMessages遇到了一些问题,我发现我的问题是由于我的前锋在struts-config.xml中有redirect=true

由于默认行为是redirect=false,我一直在考虑使用redirect=true可以获得哪些好处,而我找不到任何答案。有谁知道redirect=true何时以及为何应该用于前锋?

struts
3个回答
34
投票

它可以防止“双重提交问题”

永远不要显示页面以响应POST

始终使用GET加载页面

使用REDIRECT从POST导航到GET

更多关于这个herehere


25
投票

重定向向浏览器发送响应,强制浏览器发出新请求。从服务器的角度来看,浏览器只是发出一个新请求(尽管是自动的)。重定向的一些特征:

  • 放置现有参数和属性,使用您在URL中指定的参数形成新请求。
  • 新的URL在浏览器中可见,用户可以将其加入书签。
  • 它需要浏览器并返回,因此它可能会更慢。

在服务器上发生转发。浏览器不参与此操作。前进的一些特点:

  • 添加新参数或覆盖现有参数。因此,无法从请求中删除现有参数。
  • 可以在请求上下文中添加东西,它仍然可用。您可以通过这种方式传递信息。
  • 在浏览器中不更改URL,对于浏览器,原始地址保持不变。
  • 您只能转发到同一应用程序中的另一个URL。

所以这取决于你想要完成什么。前锋通常说得更快。但是,如果用户应该能够为新位置添加书签,则不能选择。


0
投票

如果指定redirect="true",Struts使用客户端重定向[response.sendRedirect()]。 JSP将由新的浏览器请求调用,并且旧请求中存储的任何数据都将丢失。

© www.soinside.com 2019 - 2024. All rights reserved.