使用struts2拦截器实现防止表单数据重复提交

本文介绍了一个基于Struts2框架实现的防止表单重复提交的解决方案。通过使用Struts2提供的token标签和拦截器机制,确保了在用户提交表单后不会因刷新等原因导致数据被重复发送到服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//-----------------------------------------jsp-----------------------------------------------
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
 <head>
  <title>防止表达数据重复提交</title>
 </head>

 <body>
  <form action="user!addUser.action">
    username:
   <input type="text" name="user.username" />
   <!--
   使用struts2提供的标签token
   这里会在html页面中生成一个hidden 并产生一个与服务器端session中存在一个相同的值用于比较   
   -->
   <s:token></s:token>
   <input type="submit" value="submit" />
  </form>
 </body>
</html>
//-----------------------------------------struts.xml-----------------------------------------------
<struts>
 <package name="interceptor" namespace="/" extends="struts-default">
  <action name="input" class="com.struts2.action.InputAction">
   <result>/addUser.jsp</result>
  </action>
  <action name="user" class="com.struts2.action.UserAction">
   <result>/success.jsp</result>
   <!--配置拦截器-->
   <interceptor-ref name="defaultStack"></interceptor-ref>
   <interceptor-ref name="token"></interceptor-ref>
   <!--配置错误页面,指定name="invalid.token"-->
   <result name="invalid.token">/error.jsp</result>
  </action>
 </package>
</struts>


//-----------------------------------------action-------------------------------------------------------


import com.opensymphony.xwork2.ActionSupport;
import com.struts2.dto.User;
/**
 *UserAction
 */
public class UserAction extends ActionSupport{
 
 private User user;
 public String addUser()
 {
  System.out.println("-----------添加成功!-------------");
  return this.SUCCESS;
 }
 public void setUser(User user) {
  this.user = user;
 }

}

import com.opensymphony.xwork2.ActionSupport;
/**
 *InputAction
 */
public class InputAction extends ActionSupport{
 
 public String execute() throws Exception {
  // TODO Auto-generated method stub
  return super.execute();
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值