struts2---标签、防止表单重复提交

struts2标签库:
<!-- struts2的表单标签  -->
label:页面显示的属性。
  <%--  <h2><s:fielderror/></h2>  --%>
    <s:form action="tag01Action" method="post">
     <s:textfield name="username" id="usernameid" label="username"></s:textfield>
     
     <s:password name="password" id="passwordid" label="password" showPassword="true"></s:password>
     
     <s:radio list="{'nan','nv'}" name="sex" label="sex"></s:radio>
     
     <s:checkboxlist list="#{'foot':'足球','bask':'篮球','pingpang':'乒乓球'}" name="love" label="love"></s:checkboxlist>
     
     <s:select list="{'石家庄铁道学院','抚州师专学院','襄阳师范学院'}" name="college" label="college"></s:select>
     
     <s:textarea cols="3" rows="3" name="resume" label="resume"></s:textarea>
     
     <s:submit value="提交"></s:submit>
     
     <s:reset value="重置"></s:reset>
    </s:form>

防止表单重复提交:
令牌机制:
1)、在表单的页面中,生成UUID值;
2)、把这个值通过hidden 隐藏项传递到页面中;把这个值放到session域里面setAttribute("uuid",""UUID值);
3)、提交表单到servlet中:在servlet中先得到hidden提交的值;在得到session域中的uuid值;
4)、比较这两个值是否相同,如果相同进行操作
5)、完成操作之后,要把session里面的uuid值删除。

Struts2防止表单重复提交:
Struts2里面添加一个标签:<s:token>;
通过struts2 提供 tokenIntercetor 拦截器 完成请求中令牌号 和 session中令牌号 比较
  <action name="test3" class="test1.TestAction3">
   <interceptor-ref name="token"></interceptor-ref>
   <interceptor-ref name="defaultStack"></interceptor-ref>[显示默认拦截器]
   <!—设置重复提交跳转的页面 -->
   <result name="invalid.token">/emp.jsp</result>
   <result name="success">/1.jsp</result>
   <result name="input">/2.jsp</result>
  </action>
当表单重复提交时,token拦截器自动跳转 result name="invalid.token"通过 <s:actionError/> 显示错误信息
覆盖重复提交信息  struts.messages.invalid.token=您已经重复提交表单,请刷新后重试


 

猜你喜欢

转载自jackpot1234.iteye.com/blog/2316000