8防止重复提交

来源:互联网 发布:sai for mac 10.12 编辑:程序博客网 时间:2024/06/06 00:09
struts2防止重复提交
Struts2中防止重复提交需要在<action >...</action>中增加下面的配置:
//使用系统的token拦截器
<interceptor-ref name="token"/>
//使用系统的默认拦截器
<interceptor-ref name="defaultStack"/> 
//如果是重复提交需要转向的页面
<result name="invalid.token" >/error_chongfu.jsp</result>


例如:
<action name="testAdd" class="testAction" method="testAdd"> 
<interceptor-ref name="token"/>
<interceptor-ref name="defaultStack"/> 
<result name="invalid.token" >/error.jsp</result>


<result name="success">/index.jsp</result>
<result name="error">/error.jsp</result>
</action>


然后再JSP导入struts2的标签库:<%@taglib prefix="s" uri="/struts-tags"%>,并在<form>...</form>中放置<s:token />。
其中<s:token />标签用来生成一个唯一的隐藏token标识并将此标识放到session中,在运行的时候生成的内容如下:
<input type="hidden" name="struts.token" value="C21ZWHEH0Q4B6FY15ZO5BFM1I9W8SIQH" />
例如:
<%@page contentType="text/html; charset=utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<form id="productForm" method="post" action="${ctx }/testAdd.action">
请输入用户名称:<input type="text" name="roleName" value="mmmmm">
<s:token />
<input type="submit" value="提交">
</form>
</html>
这样当我们提交表单时就会有struts2的token拦截器拦截,token拦截器将会话token与请求token比较,如果重复提交则返回invalid.token结果并转到相应的页面。
0 0
原创粉丝点击