struts2中采用url链接的action请求如何防止重复提交
2009-08-16 19:25
579 查看
有时action请求不使用form提交,而是url方式,如下:
其中所带参数cabAffirmSession是用来接收和传递action里面put到session中的值
cabValue是放到session中的值
在struts2 action中要使用session,最好的方式是实现SessionAware,这样不用每次要用时都要采用ServletActionContext.getContext().getSession()这种方式得到session
以上代码是进入页面的action时往session放一个随机数,double类型,提交请求的action中,判断页面带过来的值和session中是否相等,如果相等,移除session里的该值,执行操作;否则,返回另一个JSP页面
<s:url id="cabApply" action="userAffirm" namespace="/assets/businessChange"> <s:param name="cabinetId" value="%{cbCabinetsExeBO.id}"/> <s:param name="formId" value="%{changeApplyFormBO.id}" /> <s:param name="subApplyExeType" value="%{'CABI'}" /> <s:param name="cabAffirmSession" value="#session.cabValue"/> </s:url> <s:a href="%{cabApply}" mce_href="%{cabApply}" cssClass="buttonBlue">用户确认</s:a>
其中所带参数cabAffirmSession是用来接收和传递action里面put到session中的值
cabValue是放到session中的值
在struts2 action中要使用session,最好的方式是实现SessionAware,这样不用每次要用时都要采用ServletActionContext.getContext().getSession()这种方式得到session
public class CBApplyEditAction extends ActionSupport implements SessionAware{ private Map session; /** *//** 用户确认action防止重复提交的URL所带参数名 */ private String cabAffirmSession; private String moniAffirmSession; private String netAffirmSession; private String sysAffirmSession; // 省略上面四个属性的get set方法 public void setSession(Map session) { this.session = session; } public String seeChBusiness() throws Exception { // 往session中放值 session.put("cabValue", Math.random() + ""); session.put("moniValue", Math.random() + ""); session.put("sysValue", Math.random() + ""); session.put("netValue", Math.random() + ""); return "seeChBusiness"; } public String userAffirm() throws Exception { if (EChangeBusinessCategory.CABINETS_DEMAND.getKey().equals( subApplyExeType)) { // 将所带参数提交的值和session中的值比较 String obj = (String) session.get("cabValue"); if(cabAffirmSession!=null&&cabAffirmSession.equals(obj)){ session.remove("cabValue"); chBusiness.updateCabinetExecuteStatus(cabinetId, EChangeStatus.UserConfirm.getKey()); return SUCCESS; }else{ return "invalid"; } } if (EChangeBusinessCategory.MONITOR_DEMAND.getKey().equals( subApplyExeType)) { String obj = (String) session.get("moniValue"); if(moniAffirmSession!=null&&moniAffirmSession.equals(obj)){ session.remove("moniValue"); chBusiness.updateMonitorExecuteStatus(monitorId, EChangeStatus.UserConfirm.getKey()); return SUCCESS; }else{ return "invalid"; } } if (EChangeBusinessCategory.NETWORK_DEMAND.getKey().equals( subApplyExeType)) { String obj = (String) session.get("netValue"); if(netAffirmSession!=null&&netAffirmSession.equals(obj)){ session.remove("netValue"); chBusiness.updateNetworkExecuteStatus(networkId, EChangeStatus.UserConfirm.getKey()); return SUCCESS; }else{ return "invalid"; } } if (EChangeBusinessCategory.SYSTEM_SETUP.getKey().equals( subApplyExeType)) { String obj = (String) session.get("sysValue"); if(sysAffirmSession!=null&&sysAffirmSession.equals(obj)){ session.remove("sysValue"); chBusiness.updateServerExecuteStatus(serverId, EChangeStatus.UserConfirm.getKey()); return SUCCESS; }else{ return "invalid"; } } return SUCCESS; }
以上代码是进入页面的action时往session放一个随机数,double类型,提交请求的action中,判断页面带过来的值和session中是否相等,如果相等,移除session里的该值,执行操作;否则,返回另一个JSP页面
相关文章推荐
- 面试题——Struts2如何防止表单重复提交
- struts2点击action请求url重复命名空间
- struts2中采用拦截器防止表单重复提交
- Struts2 页面url请求如何找action
- java发送url请求进行文件的提交以及后台struts2的action接收处理
- JS Ajax请求如何防止重复提交
- struts2如何防止表单重复提交
- Struts2如何防止表单重复提交
- HttpURLConnection 请求struts2的action。如何拿到结果
- 采用struts2防止重复提交后无法采用request.getParameter("xxx")得到页面隐藏框值解决方案
- java发送url请求进行文件的提交以及后台struts2的action接收处理
- Struts2 页面url请求如何找action
- Action的重定向-Struts2中防止表单重复提交的两种方式(二)
- struts2如何防止重复提交
- struts2中如何去掉请求url中的.action
- 一道面试题:如何防止异步请求的重复提交
- struts2防止表单重复提交的解决方案
- 如何防止表单重复提交
- 说说实际项目中如何防止重复提交
- JavaWeb 如何防止表单重复提交 - 使用Token,令牌