struts2防止重复提交的办法

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

  	<constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.devMode" value="true" /> 

    <package name="default" namespace="" extends="struts-default">
        <!-- 这里是拦截器的配置 -->
        <interceptors>
            <interceptor name="test" class="com.test.interceptor.TestInterceptor"></interceptor>
            <!-- 用于仅拦截某些方法 -->
            <interceptor name="function" class="com.test.interceptor.FunctionInterceptor">
                <param name="includeMethods">add</param>
            </interceptor>
             <interceptor-stack name="myStack">
                 <interceptor-ref name="test"/>
                 <interceptor-ref name="function"/>
                 <interceptor-ref name="token"/>
                 <interceptor-ref name="defaultStack"/>
             </interceptor-stack>
        </interceptors>

    	<!-- 正确和错误的分别跳转,input是在验证失败后会跳转的页面 -->
    	<action name="data" class="com.test.action.ValideAction">
    	    <interceptor-ref name="myStack"></interceptor-ref> <!-- 使用拦截器的动作 -->
    	     <result name="success">/result.jsp</result>
    	    <result name="input">/login.jsp</result>
    	    <result name="invalid.token">/token_error.jsp</result><!-- 防止重复提交的办法 -->
    	</action>

    	<action name="FunctionInterceptor" class="com.test.action.ValideAction" method="add">
    	    <interceptor-ref name="myStack"></interceptor-ref> <!-- 使用拦截器的动作 -->
    	     <result name="success">/result.jsp</result>
    	    <result name="input">/login.jsp</result>
    	     <result name="invalid.token">/token_error.jsp</result>
    	</action>
    	<action name="dele" class="com.test.action.ValideAction" method="dele">
    	    <interceptor-ref name="myStack"></interceptor-ref> <!-- 使用拦截器的动作 -->
    	     <result name="success">/result.jsp</result>
    	    <result name="input">/login.jsp</result>
    	     <result name="invalid.token">/token_error.jsp</result>
    	</action>
    </package>
</struts>

上面是struts.xml中的代码,主要的代码是:

<result name="invalid.token">/token_error.jsp</result>

这样一段。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 这个地方是用来显示错误信息 -->
<s:fielderror/>
<form action="data.action" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
-------------------联系方式----------------<br>
手机:<input type="text" name="contact.phone"><br>
地址:<input type="text" name="contact.address"><br>
邮箱:<input type="text" name="contact.email"><br>

<s:token></s:token><!-- 防止重复提交,要加上这一段话 -->
<input type="submit" name="ok"><br><br>

<a href="FunctionInterceptor.action">测试FunctionInterceptor的add</a><br><br>
<a href="dele.action">测试FunctionInterceptor的dele</a><br><br>
</form>
</body>
</html>

在JSP页面中,要加上这样一段话,<s:token></s:token><!-- 防止重复提交,要加上这一段话 -->

就可以防止重复提交了。

时间: 2024-10-05 16:15:28

struts2防止重复提交的办法的相关文章

AJAX防重复提交的办法总结

如果提交对象为按钮的话,可以对按钮设置disabled,此办法适应于按钮提交,此种方法简单粗暴,也是很多人用的办法,代如下: //在按钮提交之后和AJAX提交之前将按钮设置为禁用 $("input[type=submit]").attr('disabled',true) $.ajax({ url:'/post.php' data:{a:1,b,1} success:function(){ //在提交成功之后重新启用该按钮 $("input[type=submit]"

(九)Struts2 防重复提交

所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:重复提交示例演示 第二节:使用<s:token/>标签防重复提交 <s:token></s:token> :加在form 里: 使用token 拦截器: <interceptor-ref name="token"></interceptor-ref> <interceptor-ref name=

struts2学习(15)struts2防重复提交

一.重复提交的例子: 模拟一种情况,存在延时啊,系统比较繁忙啊啥的. 模拟延迟5s钟,用户点了一次提交,又点了一次提交,例子中模拟这种情况: 这样会造成重复提交: com.cy.action.StudentAction.java: package com.cy.action; import java.io.File; import org.apache.commons.io.FileUtils; import com.cy.model.Student; import com.opensympho

struts2防止反复提交的办法

<? xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <const

表单重复提交解决办法

表单重复提交是在多用户Web应用中最常见.带来很多麻烦的一个问题.有很多的应用场景都会遇到重复提交问题,比如: 点击提交按钮两次. 点击刷新按钮. 使用浏览器后退按钮重复之前的操作,导致重复提交表单. 使用浏览器历史记录重复提交表单. 浏览器重复的HTTP请求. 几种防止表单重复提交的方法 禁掉提交按钮.表单提交后使用Javascript使提交按钮disable.这种方法防止心急的用户多次点击按钮.但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了. 我之前的文章曾说过用一些

ajax禁止重复提交的解决办法

本篇文章主要分享下在使用jquery ajax时防止重复提交的办法,其实方法很简单,就是在用户点击了提交按钮之后将按钮设置为不可点击即可,具体代码如下: 1 $('#submit').click(function(){ 2 var objButton=$(this); 3 var content=$('#content').val(); 4 $.ajax({ 5 url:web_url+'jquery.php', 6 type:'post', 7 cache:false, 8 data: 'ac

防止表单重复提交的三种方法

防止重复提交的办法 ----------------------------------------------------------------- jquery 的方法 $("#btn").one("click",function(){//只触发一次 YouMethod(); }); ------------------------------------------------------------------js的方法 var status=0;//开关

struts2 防止表单的重复提交

防止表单重复提交(拦截器) 1.回顾之前的解决办法: 2.Struts2中的解决办法: 2.1.使用重定向 <result type="redirect">/success.jsp</result> 遗留的问题:防不住后退,再提交. 2.2.使用<s:token/>生成令牌配合token拦截器 1 <%@ page language="java" import="java.util.*" pageEnco

Struts2(八)之UI标签和防止表单重复提交

一.UI标签 1.1.struts2中UI标签的优势 自动的数据回显和错误提示功能 自带的简单样式和排版 1.2.UI案例 结果: 1.3.UI标签的主题 1.3.1.struts2中默认的主题 默认主题的名称是XHTML,都是在struts的默认属性文件中定义着:default.properties 默认模板存放位置: 1.3.2.更改默认主题 1.更改表单某个元素的默认主题:使用的是表单元素的theme属性. 2.更改表单所有主题:使用的是form标签的theme属性. 3.更改全站所有表单