struts 防刷新重复提交(Token)
Token防止刷新页面时造成的页面表单重复提交的问题:
1、首先要通过一个action方法生成Token令牌,生成一个随机数
this.saveToken(request); //生成Token
return mapping.findForward("success"); //跳转到增加页面
2、<%@ page import="org.apache.struts.taglib.html.Constants" %>
<%@ page import="org.apache.struts.Globals" %>
然后在页面上添加一个隐藏域
<input type="hidden" name="<%=Constants.TOKEN_KEY%>" value="<%=session.getAttribute(Globals.TRANSACTION_TOKEN_KEY)%>"/>
Hidden的名称必须为Constants.TOKEN_KEY
Hidden的值必须为session.getAttribute(Globals.TRANSACTION_TOKEN_KEY)
3、在Action的add方法中,使用isTokenValid(request)验证Token,如果产生的Token令牌随机数不同,则
跳转到错误页面,如果相同则把session中的Token删除,然后进行业务处理
if (!this.isTokenValid(request)) {
this.saveToken(request);
return mapping.findForward("error");
}else
this.resetToken(request);
//业务代码
}
Token防止刷新页面时造成的页面表单重复提交的问题:
1、首先要通过一个action方法生成Token令牌,生成一个随机数
this.saveToken(request); //生成Token
return mapping.findForward("success"); //跳转到增加页面
2、<%@ page import="org.apache.struts.taglib.html.Constants" %>
<%@ page import="org.apache.struts.Globals" %>
然后在页面上添加一个隐藏域
<input type="hidden" name="<%=Constants.TOKEN_KEY%>" value="<%=session.getAttribute(Globals.TRANSACTION_TOKEN_KEY)%>"/>
Hidden的名称必须为Constants.TOKEN_KEY
Hidden的值必须为session.getAttribute(Globals.TRANSACTION_TOKEN_KEY)
3、在Action的add方法中,使用isTokenValid(request)验证Token,如果产生的Token令牌随机数不同,则
跳转到错误页面,如果相同则把session中的Token删除,然后进行业务处理
if (!this.isTokenValid(request)) {
this.saveToken(request);
return mapping.findForward("error");
}else
this.resetToken(request);
//业务代码
}
以上为转帖
但是我试过都不行,每次this.isTokenValid(request)) 返回的都是false
后来发现使用token,必须使用struts1.x <html:form></html:form>的标签才能起效。