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

时间:2009-03-05 12:10:39

标签: struts

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

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

3 个答案:

答案 0 :(得分:34)

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

永远不会显示响应POST的页面

始终使用GET加载页面

使用REDIRECT

从POST导航到GET

有关此herehere

的更多信息

答案 1 :(得分:25)

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

  • 现有参数和 属性被处理,一个新的 请求与参数一起形成 您在URL中指定。
  • 新网址 在浏览器中,用户可见 可以为它添加书签
  • 需要去旅行 浏览器和后面,所以它可以 慢。

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

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

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

答案 2 :(得分:0)

如果您指定 var add = function ( a, b ) { if ( typeof a !== 'number' || typeof b !== 'number' ) throw { name: 'TypeError!\n', message: 'You must enter two numbers' } return a + b; } try { console.log( add( 3, undefined ) ); } catch ( e ) { console.log( e.name + e.message ); } ,Struts使用客户端重定向[redirect="true"]。 JSP将由新的浏览器请求调用,旧请求中存储的任何数据都将丢失。