15.6.3 使用TokenSessionStoreInterceptor重新输出结果页面
com.opensymphony.webwork.interceptor.TokenSessionStoreInterceptor扩展了Token- Interceptor,重写了handleInvalidToken()方法和handleValidToken()方法。在TokenSession- StoreInterceptor中,handleValidToken()在session中保存了一个包含actionInvocation和标记(token)值的对象。如果有重复提交并且重用了同样的标记(token),这个对象会被从session中取出,并根据保存的action的状态重新输出结果页面,这里的action不需要再被执行一次。这样可以让你有效地防止重复提交引发的action重复执行,这可以给用户带来更好的用户体验:他们重新看到一个相同的结果页面,这比得到一个错误页面要好很多。
尽管token和token-session interceptor都能够帮助防止重复请求被提交和处理,但是对于Web应用和过分频繁点击的用户,这里还有另外一个普遍的问题:运行时间很长的action常常会被重复提交多次。虽然token-session interceptor显然可以解决这个问题,但是有些时候在action执行时显示一个简单的请等待页面会让用户对你的Web应用感到更有信心。execAndWait interceptor可以为你提供这种特性。







