"该问题涉及的是网页表单的提交防止重复操作,主要通过Struts框架进行处理。" 在Web开发中,"不能重复提交"是一个常见的需求,特别是在处理用户敏感数据时,比如登录、支付等操作,防止用户无意或恶意多次点击提交按钮导致重复操作。在给出的代码片段中,我们看到一个基于Struts框架的Java应用示例,它展示了如何处理表单提交以防止重复提交。 首先,HTML部分展示了表单的基本结构,其中`<html:form>`标签是Struts标签库的一部分,用于创建一个表单,它的`action`属性指定了提交的处理URL("/Login.do?m=doLogin"),`method`属性设为"POST"表示使用HTTP的POST方法提交数据。`<html:text>`标签用于创建一个文本输入框,用户可以在这里输入用户名。 接下来,Java部分展示了Struts的ActionForm类的子类`UserInfo`,这个类是用来封装表单数据的。`username`字段存储用户输入的用户名,`getUsername`和`setUsername`方法分别用于获取和设置用户名值,符合JavaBeans规范。 在Struts的Action类中,有两个关键方法:`Login`和`doLogin`。`Login`方法首先调用了`saveToken(request)`,这是Struts提供的一个方法,用于生成一个令牌(token)并存储在请求(request)对象中,这个令牌用于验证后续的表单提交是否合法。`saveToken`的目的是防止表单重复提交,因为每个新的表单提交都会有一个新的令牌。 然后,`doLogin`方法首先检查令牌的合法性,通过`isTokenValid(request)`方法。如果令牌无效(即表单被重复提交),则添加错误消息到`ActionMessages`对象,并通过`saveErrors(request, errors)`保存这些错误,以便在视图层显示给用户。如果令牌有效,那么正常的业务逻辑会继续执行,例如验证用户名和密码等。 总结起来,防止表单重复提交通常通过以下步骤实现: 1. 创建一个唯一的令牌,并在用户提交表单时保存在服务器端。 2. 当用户再次提交表单时,检查令牌的有效性。 3. 如果令牌无效,拒绝处理请求;如果有效,处理请求。 这种方式可以确保每个表单提交只被处理一次,避免了可能的数据冲突和业务逻辑错误。在实际开发中,还可以结合前端JavaScript禁用提交按钮或者使用AJAX异步提交等方式来进一步增强防止重复提交的效果。
<html:form action="/Login.do?m=doLogin" method = "POST">
<html:text property="username"></html:text>
<html:submit>Submit</html:submit>
</html:form>
--java代码
package com.tim.beans;
import org.apache.struts.action.ActionForm;
public class UserInfo extends ActionForm{
private static final long serialVersionUID = 6705948863335091123L;
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
public ActionForward Login(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
this.saveToken(request);
return mapping.findForward("login");
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展