insert步骤。
原来的步骤insert.jsp(form)点提交---->insertAction(做插入的)--->insert.jsp跳回原来页面
但是再次使用刷新会再次提交。
解决方法:
tokenAction--->insert.jsp(form)---->insertAction--->insert.jsp
也就是在提交前先进入一个action,此action生成一个token
tokenAction中execute代码如下:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
saveToken(request);//生成一个TOKEN
return mapping.findForward("insert");
}
在insertAction中的execute写如下代码:
protected ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionMessages errors=new ActionMessages();
if(!isTokenValid(request)){
errors.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.invalid.token"));
saveToken(request);
return mapping.findForward("insert");
}
else{
resetToken(request);
saveToken(request);
}
/**insert**/
插入的方法
/**end**/
return mapping.findForward("insert");
}
<forward name="insert" path="/insert.jsp"/>
注意:insert.jsp中的form必须为html:form,另外html:form 没有id属性,取代的是styleId
分享到:
相关推荐
下面将详细讲解Struts2令牌解决重复提交问题的过程: 1. **生成令牌**:在Action中,使用`TokenAwareActionSupport`作为基类,这个类实现了`TokenSessionStore`接口,可以方便地获取和验证令牌。在表单展示之前,...
总的来说,Struts2的`token`拦截器是防止重复提交的有效解决方案,通过结合合理的拦截器配置和跳转策略,可以确保应用程序的稳定性和数据一致性。在实际开发中,还需要考虑其他因素,如异常处理、用户体验优化等,以...
通过以上步骤,我们可以有效地利用Struts框架内置的令牌机制来解决表单重复提交的问题。这种方法简单易行,同时也能提高应用的安全性和用户体验。在实际项目中,可以根据具体需求灵活调整令牌的有效期、验证逻辑等,...
这样可以避免因刷新页面或重复提交导致的问题。 2. 操作状态管理(OWSM,Operation Status Management): Struts2的OWSM插件提供了一种管理用户操作状态的方法,它可以跟踪用户的请求状态,对重复请求进行拦截。...
总的来说,Struts Token机制通过维护一个临时的、一次性使用的Token,有效地解决了Web应用中的表单重复提交问题,提高了系统的稳定性和安全性。在实际开发中,应根据项目需求灵活运用并优化此机制。
本节主要关注Struts在处理两个关键问题上的高级应用:防止重复提交和文件上传组件的使用。 **一、解决重复提交** 在Web应用程序中,重复提交是一个常见的问题,可能导致数据不一致或服务过载。Struts通过几种策略...
Token机制是一种防止重复提交的方法,它通过在客户端(通常是浏览器的session或者cookie)和服务器端存储一个唯一的令牌,确保每个请求是唯一的。当用户首次提交表单时,服务器会生成一个随机的令牌,并将其发送给...
在本文中,我们将深入探讨如何通过XML配置来解决Struts中的重复提交问题。 首先,理解重复提交的原因。在Web应用中,用户点击提交按钮后,如果网络延迟或刷新页面,同一个请求可能被发送多次。Struts框架默认情况下...
总结来说,Servlet、Struts和SpringMVC都提供了各自的解决方案来防止表单重复提交,主要方法包括使用Session、令牌机制、重定向和拦截器等。开发者可以根据项目需求选择合适的方式来实现,确保应用的稳定性和数据...
综上所述,Struts框架通过Token机制有效地解决了表单重复提交的问题,提供了更健壮的Web应用安全性。正确理解和应用这一机制对于Java Web开发者来说至关重要。在实际项目中,结合其他防御策略,如CSRF防护,可以...
在J2EE框架中,开发过程中常常会遇到一些与用户交互相关的技术问题,如重复提交、重复刷新以及防止用户后退导致的数据不一致。这些问题在实际应用中可能会对系统的稳定性和数据完整性造成影响,因此需要采取相应的...
4. **令牌回退**:当表单提交成功后,为了防止用户意外刷新页面导致重复提交,Struts2会清除服务器会话中的令牌。这种行为称为令牌回退,可以避免用户在不知情的情况下多次执行相同操作。 **二、防止重复提交** ...
3. 要确保在处理完一次请求后清除令牌,避免令牌重复使用。 4. 防止令牌泄露,不要在URL、日志或响应中暴露令牌值。 总的来说,Struts的标准库提供了简单易用的令牌功能,有效地提高了Web应用的安全性。通过理解其...
##### 方法6:Ajax无刷新提交 使用Ajax进行异步提交可以避免整个页面的刷新,从而降低重复提交的风险。这种方式适用于需要实时反馈的场景。 ##### 方法7:Struts框架中的重定向 在Struts框架中,可以通过配置文件...
3. **用户体验**:令牌机制可能会导致用户刷新页面时出现错误,因此需要处理好这种情况,如通过重定向避免重复提交。 总的来说,Struts2的令牌机制是防止CSRF攻击和控制重复提交的重要手段,理解并正确使用它对于...
下面我们将详细探讨如何利用Struts1的令牌验证来解决主键刷新冲突。 首先,我们需要在JSP页面上生成并保存一个唯一的令牌。这通常通过调用`org.apache.struts.util.TokenProcessor.getInstance().saveToken(request...
这种方法通过利用会话(Session)和令牌(Token)机制来实现,确保即使在用户刷新页面的情况下,也只允许一次有效提交。 #### 三、具体实现原理 ##### 1. 使用Session存储状态 - **初始化状态**:首先检查`...
本篇文章将深入探讨如何防止表单重复提交,主要关注于基于Struts2框架的解决方案。 首先,理解表单重复提交的原因。用户在点击提交按钮后,如果网络延迟或用户误操作导致页面刷新或再次点击提交,就可能发生重复...