在web开发表单提交时,token是解决重复提交的比较好的方法。
<form action="beckham/login.action" method="post"> 用户名:<input type="text" name="user.username" ><br> 密码:<input type="text" name="user.password"><br> <s:token></s:token> <input type="submit" value="提交"> </form>
在JSP页面里面加入token验证。
在struts.xml里面加入token拦截器的配置:
<action name="login" class="com.struts2.LoginAction" method="login"> <result name="success">/loginSucc.jsp</result> <result name="error">/loginError.jsp</result> <!-- 配置等待页面,返回值必须是wait --> <result name="wait">/wait.jsp</result> <!-- 重复提交时返回的页面 --> <result name="invalid.token">/loginSucc.jsp</result> <interceptor-ref name="token"> </interceptor-ref>
在使用token拦截器时,action配置里面返回值是invalid.token ,需要配置重复提交时跳转的页面
而如果用tokensession拦截器,则当重复提交时,仍然在提交成功的页面:
<action name="login" class="com.struts2.LoginAction" method="login"> <result name="success">/loginSucc.jsp</result> <result name="error">/loginError.jsp</result> <!-- 配置等待页面,返回值必须是wait --> <result name="wait">/wait.jsp</result> <interceptor-ref name="tokenSession"> </interceptor-ref>