<?

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><!-- 防止反复提交。要加上这一段话 -->

就能够防止反复提交了。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaXRidWx1b2dl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

struts2防止反复提交的办法的更多相关文章

  1. Struts2复习(四)防止表单反复提交

    1.採取请求转发的方式完毕表单内容的加入会造成内容的反复插入. 2.採取重定向的方式实现数据的加入不会导致数据的反复插入. 3.防止表单反复提交的两种方式 1)  通过重定向  2)  通过Sessi ...

  2. (九)Struts2 防重复提交

    所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:重复提交示例演示 struts.xml <?xml version ...

  3. Servlet、SPringMVC、Struts等防止表单反复提交的多种处理方法

    第一种处理方法(非拦截器): 眼下这样的方法不建议,由于JSP规范不建议写JAVA代码.这样的能够方便另外一种处理方法的理解,另外一种方法引入拦截器的思想,原理基本一样,模仿Struts的Token机 ...

  4. 关于struts2中表单提交时,中文乱码问题的解决

    http://blog.csdn.net/hjw506848887/article/details/8966194 今天写项目时,突然遇到了struts2中表单提交的中文乱码问题,调了好久就是不知道答 ...

  5. AJAX防重复提交的办法总结

    最近的维护公司的一个代理商平台的时候,客服人员一直反映说的统计信息的时候有重复数据,平台一直都很正常,这个功能是最近新进的一个实习生同事写的功能,然后就排查问题人所在,发现新的这个模块的AJAX提交数 ...

  6. struts2中form提交到action中的中文参数乱码问题解决办法(包括取中文路径)

    我的前台页是这样的: <body>      <form action="test.action" method="post">     ...

  7. struts2表单提交的乱码的问题的解决

    今天碰到一乱码问题,百思不得其解. 最后解决办法是设置了表单的提交方式,将method设置为post,解决问题.虽然默认的提交方式是post.但是如果不显式设置的话,就会出现我所出现的问题. 总结下处 ...

  8. 【转载】jQuery动画连续触发、滞后反复执行解决办法

    转载: http://www.cnblogs.com/yuejin/archive/2012/12/18/2822595.html jQuery中slideUp .slideDown.animate等 ...

  9. jQuery动画连续触发、滞后反复执行解决办法

    jQuery中slideUp .slideDown.animate等动画运用时,如果目标元素是被外部事件驱动, 当鼠标快速地连续触发外部元素事件, 动画会滞后的反复执行,其表现不雅. 则解决办法: 1 ...

随机推荐

  1. 阻止SPY++类似的程序捕捉软件窗口

    我以前用Spy++能轻易捕捉360软件界面,除了一些应用DHTML制作的窗体.昨天我再用Spy++捕捉的时候捕捉不到了,甚至连最外围的对话框都捕捉不到,显然是做了类似拦截API的处理.下面我也模拟一下 ...

  2. IE兼容性视图设置

    问题: 页面 http://course.upol.cn/lx/jzjjygl/index.html 的课程学习中课程打不开 看了代码是有浏览器版本要求,IE9以上无法访问 解决办法: 1. 在IE设 ...

  3. 【C】——sigprocmask 阻塞进程信号

    1.有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数.这种情况是通过阻塞信号实现的. 2.信号阻塞和忽略信号的区别. 阻塞的概念和忽略 ...

  4. 【C】——const和volatile可以并用吗?

    答案是肯定的,可以一起用. 因为很多人误解了const的真正含义,很多初学者认为const修饰的就是常量,而常量不会改变,而既然不会改变,那volatile就没有意义. 但是实际上这正是对const的 ...

  5. java对mongoDB的基本操作 ,游标使用

    package com.mongodb.text; import java.net.UnknownHostException; import java.util.List; import org.bs ...

  6. In R, how to split/subset a data frame by factors in one column?

    按照某列的值拆分data.frame My data is like this (for example): ID Rate State 1 24 AL 2 35 MN 3 46 FL 4 34 AL ...

  7. [hadoop读书笔记] 第九章 构建Hadoop集群

    P322 运行datanode和tasktracker的典型机器配置(2010年) 处理器:两个四核2-2.5GHz CPU 内存:16-46GN ECC RAM 磁盘存储器:4*1TB SATA 磁 ...

  8. IDEA 创建git 分支 拉取分支

        此时只是在本地创建好了分支,修改源代码后add,commit将本地分支提交到远程仓库          分支已创建,其它成员此时就可以从git拉分支

  9. mxnet卷积神经网络训练MNIST数据集测试

    mxnet框架下超全手写字体识别—从数据预处理到网络的训练—模型及日志的保存 import numpy as np import mxnet as mx import logging logging. ...

  10. Android 8 AudioPolicy 分析

    AudioTrack最终会调用AudioPolicyManager::getOutput(); frameworks\av\services\audiopolicy\managerdefault\Au ...