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

就能够防止反复提交了。

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

时间: 2024-11-13 14:30:00

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

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> <consta

struts2漏洞原理及解决办法

1.原理 Struts2的中心是运用的webwork结构,处置 action时号码大全经过调用底层的getter/setter办法来处置http的参数,它将每个http参数声明为一个ONGL(这里是ONGL的介绍)语句.当关键词挖掘工具咱们提交一个http参数: ?user.address.city=Bishkek&user['favoriteDrink']=kumys ONGL将它转换为: action.getUser().getAddress().setCity("Bishkek&q

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

第一种处理方法(非拦截器): 眼下这样的方法不建议,由于JSP规范不建议写JAVA代码.这样的能够方便另外一种处理方法的理解,另外一种方法引入拦截器的思想,原理基本一样,模仿Struts的Token机制. 1.在须要防止反复的jsp中添?以下的java代码, <%@page import="java.util.Random"%> <%@page import="java.util.Set"%> <%@page import="

【Struts2】★☆之struts2对Action提交方法进行验证

[Struts2]★☆之struts2对Action提交方法进行验证 在实际的开发项目中,我们通常采用的是js对我们输入的值进行验证,例如,用户名的长度,密码长度,等等.但是这样做,不好之处就是我们可以通过人为的将开发者的验证js注掉,这样就导致验证失败,对后台安全性是一个很大的威胁,在采用struts2进行开发时,我们可以采用框架内置的校验器,对我们的Action进行校验.本文所讲诉的就是如何使用重写struts2中的ActionSupport里面的validate方法对输入值进行校验. ok

SVN cleanup操作反复失败解决办法 (转载)

SVN cleanup操作反复失败解决办法 2014-11-21 11:12:24 标签:SVN cleanup sqlite3 work_queue 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://flyingcat2013.blog.51cto.com/7061638/1580692 今天在更新项目的时候遇到一个问题,按惯例要cleanup才能重新更新.但是很不幸,在cleanup的时候又遇到了问题! 1    svn c

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

http://blog.csdn.net/hjw506848887/article/details/8966194 今天写项目时,突然遇到了struts2中表单提交的中文乱码问题,调了好久就是不知道答案. 下面的我的jsp页面: [html] view plaincopyprint? <form action="indexAction.action"> <input name="dimName" type="text" />

Struts2:前台提交JSON数组

JS: $.ajax({ url : {URL}, type : "POST", data : { "list[0]":{VALUE0}, "list[1]":{VALUE1} }, scriptCharSet : "UTF-8", success : function(data) {} }); FORM: public class Form{ private List list; public List getList(){

AJAX防重复提交的办法总结

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

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

jQuery中slideUp .slideDown.animate等动画运用时,如果目标元素是被外部事件驱动, 当鼠标快速地连续触发外部元素事件, 动画会滞后的反复执行,其表现不雅. 则解决办法: 1.在触发元素上的事件设置为延迟处理, 即可避免滞后反复执行的问题(使用setTimeout) 2.在触发元素的事件时预先停止所有的动画,再执行相应的动画事件(使用stop) jquery stop: //语法结构     $("#div").stop();//停止当前动画,继续下一个动画