24

ActionMessages在执行未显示的操作期间遇到了一些问题,我发现我的问题是由于我的前锋redirect=true在 struts-config.xml 中。

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

4

3 回答 3

38

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

从不显示响应 POST 的页面

始终使用 GET 加载页面

使用 REDIRECT 从 POST 导航到 GET

更多关于这里这里

于 2009-03-05T12:20:35.707 回答
28

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

  • 处理现有的参数和属性,使用您在 URL 中指定的参数形成一个新的请求。
  • 新 URL 在浏览器中可见,用户可以为其添加书签。
  • 它需要访问浏览器并返回,因此它可能会更慢。

转发发生在服务器上。浏览器不参与其中。前锋的一些特点:

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

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

于 2009-03-11T20:45:14.070 回答
0

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

于 2016-02-02T11:06:18.913 回答